Asp.net mvc 4 ASP.NET MVC4模型未绑定
我有一个非常简单的ASP.NETMVC4页面。它正在呈现CustomerModel的编辑表单。表单显示正确,但当我点击edit and post back时,模型没有被绑定。相反,CustomerModel的所有属性都保留为默认值。请注意,正在调用正确的控制器方法,因此这不是问题所在 我可以看到表单值与模型属性(Id、Name、Description)的名称相匹配,但是模型没有设置它们 想法 模型如下:Asp.net mvc 4 ASP.NET MVC4模型未绑定,asp.net-mvc-4,model-binding,Asp.net Mvc 4,Model Binding,我有一个非常简单的ASP.NETMVC4页面。它正在呈现CustomerModel的编辑表单。表单显示正确,但当我点击edit and post back时,模型没有被绑定。相反,CustomerModel的所有属性都保留为默认值。请注意,正在调用正确的控制器方法,因此这不是问题所在 我可以看到表单值与模型属性(Id、Name、Description)的名称相匹配,但是模型没有设置它们 想法 模型如下: public class CustomerModel { [Required]
public class CustomerModel
{
[Required]
public Guid Id;
[Required]
public string Name;
[Required]
public string Description;
}
以下是相关的控制器方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(CustomerModel customerModel)
{
if (ModelState.IsValid)
{
//...Do stuff
return RedirectToAction("Index");
}
return View(customerModel);
}
最后,这里是表单集合的屏幕截图,其中包含填充的值:
您的模型有公共字段,但没有公共属性,这些字段不同 改为:
public class CustomerModel
{
[Required]
public Guid Id {get; set;}
[Required]
public string Name {get; set;}
[Required]
public string Description {get; set;}
}
默认的MVC模型绑定器将使用属性,而不是字段
关于这方面的更多信息-我没有看到你的防伪令牌。你希望在哪里看到它?我在视图中有它,在方法上有validate属性。它必须在您的表单中,而不仅仅是在您的视图中。它必须在提交的表单集合值中。哈!就这样。可能永远也不会知道。谢谢