如何使用XmlHttpRequest发送FormData并映射到ViewModel属性

时间:2019-06-17 15:47:04

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

我正在尝试使用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 };
}

2 个答案:

答案 0 :(得分:0)

尝试此解决方案:

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 };
    }

答案 1 :(得分:0)

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