【问题标题】:How can I send FormData using XmlHttpRequest and map to viewmodel properties [closed]如何使用 XmlHttpRequest 发送 FormData 并映射到 viewmodel 属性 [关闭]
【发布时间】:2019-10-31 06:03:57
【问题描述】:

我正在尝试使用 XmlHttpRequest 将 FormData 对象中的一些值发送到控制器。问题是当我在本地(本地主机)执行此操作时,数据会正确映射到 ViewModel 的属性,并且一切正常。 当我在我们的生产环境中尝试这样做时,似乎这些值没有映射到 ViewModel。(发布在同一个 url 上)
- 有没有我不知道的安全检查?
- 有没有人建议做什么或去哪里看?

JS:
var payload = new FormData();
payload.append('TestTitle', $('#TestTitle').text());
payload.append('TestId', $('#TestId').val());
payload.append('TestGuid', $('#TestGuid').val());

var xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', onStateChange);
xhr.open('POST', '/test/savetest?rand=' + Math.random());
xhr.send(payload);

------
C#:
[HttpPost]
public ActionResult SaveTest(TestViewModel model)
{
   if (ModelState.IsValid)
   {
       //do stuff
   }
   return new JsonResult() { Data = new { Success = false }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

【问题讨论】:

    标签: javascript c# asp.net-mvc model xmlhttprequest


    【解决方案1】:

    经过一番调查,我发现 POST 由于安全设置而被阻止。

    【讨论】:

      【解决方案2】:

      试试这个解决方案:

      JS:
      
          var payload = new FormData();
          payload.append('TestTitle', $('#TestTitle').text());
          payload.append('TestId', $('#TestId').val());
          payload.append('TestGuid', $('#TestGuid').val());
      
          var xhr = new XMLHttpRequest();
          xhr.addEventListener('readystatechange', onStateChange);
          xhr.open('POST', '/test/savetest?rand=' + Math.random(),false);
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          xhr.send(payload);
      
          ------
          C#:
          [HttpPost]
          public ActionResult SaveTest(TestViewModel model)
          {
             if (ModelState.IsValid)
             {
                 //do stuff
             }
             return new JsonResult() { Data = new { Success = false }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
          }
      

      【讨论】:

      • 感谢您的回复,不幸的是,此解决方案在我的本地主机上也不起作用。 (ViewModel 只有默认值)
      • 尝试使用 jQuery.ajax 代替 XMLhttpRequest
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2017-05-10
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      相关资源
      最近更新 更多