模型如何将Javascript FormData与Asp.net控制器模型绑定

模型如何将Javascript FormData与Asp.net控制器模型绑定,javascript,c#,asp.net,ajax,asp.net-mvc,Javascript,C#,Asp.net,Ajax,Asp.net Mvc,是否可以将ASP.NET控制器模型与提交数据的ajax请求自动绑定 在我提供的示例中,我需要使用HttpContext.Current.Request.Form[“property\u name”] 接收数据,因为如果我提供的模型与提交的表单数据相同,则所有值都等于null 还是ASP.NET模型绑定只对JSON请求有效 简单代码如下: 视图: 控制器不工作: [HttpPost] public ActionResult TestPost() { var

是否可以将ASP.NET控制器模型与提交数据的ajax请求自动绑定

在我提供的示例中,我需要使用HttpContext.Current.Request.Form[“property\u name”] 接收数据,因为如果我提供的模型与提交的表单数据相同,则所有值都等于null

还是ASP.NET模型绑定只对JSON请求有效

简单代码如下:

视图:

控制器不工作:

    [HttpPost]
    public ActionResult TestPost()
    {
        var firstname = HttpContext.Current.Request.Form["firstName"];
        var lastName =  HttpContext.Current.Request.Form["lastName"];
        return PartialView("TestPost");
    }
   public class User
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

   [HttpPost]
    public ActionResult TestPost(User model) //model values are null
    {

        return PartialView("TestPost");
    }

将FormData对象与ajax一起使用时,数据将作为
multipart/form data
发送,内容类型标题将自动为您设置正确的边界。
您可以覆盖内容类型并将tit设置为您想要的任何内容,这就是此处发生的情况。
你可能会想,我没有这么做,是你的好朋友jQuery为你做的。它为您设置了$.ajax的默认内容类型(
application/x-www-form-urlencoded
),这几乎把请求搞砸了。

要停止此操作,即停止jQuery设置内容类型标题,您必须将
contentType
参数设置为false。

在ajax中使用FormData对象时,数据将作为
多部分/表单数据发送
,并且内容类型标题将自动为您设置正确的边界。
您可以覆盖内容类型并将tit设置为您想要的任何内容,这就是此处发生的情况。
你可能会想,我没有这么做,是你的好朋友jQuery为你做的。它为您设置了$.ajax的默认内容类型(
application/x-www-form-urlencoded
),这几乎把请求搞砸了。

要停止此操作,即停止jQuery设置内容类型头,您必须将
contentType
参数设置为false。

使用Ajax.BeginForm了解更多信息,请检查此链接您忘记了
contentType:false,
@rashfmnb如果我的Ajax请求在js文件中怎么办?@Musa它确实做到了,有些人。想解释一下原因/方法吗?(我会尝试用谷歌搜索我自己,但…)请查看此链接使用Ajax.BeginForm了解更多信息请查看此链接您忘记了
ContentType:false,
@rashfmnb如果我的Ajax请求在js文件中怎么办?@Musa它确实做到了,真是不可思议。想解释一下为什么/怎么做吗?(我会尝试用谷歌搜索自己,但…)请查看此链接
    [HttpPost]
    public ActionResult TestPost()
    {
        var firstname = HttpContext.Current.Request.Form["firstName"];
        var lastName =  HttpContext.Current.Request.Form["lastName"];
        return PartialView("TestPost");
    }
   public class User
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

   [HttpPost]
    public ActionResult TestPost(User model) //model values are null
    {

        return PartialView("TestPost");
    }