ASP.NET MVC4模型没有绑定

时间:2013-01-14 23:59:48

标签: asp.net-mvc-4 model-binding

我有一个非常简单的ASP.NET MVC4页面。它正在呈现CustomerModel的编辑表单。表单正确显示,但是当我点击编辑并回发时,模型没有被绑定。相反,CustomerModel的所有属性都保留其默认值。请注意,正在调用正确的控制器方法 ,所以这不是问题。

我可以看到表单值与模型属性(Id,Name,Description)匹配的名称,但模型没有设置它们。

想法?

以下是模型:

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

最后,这是一个带有填充值的表单集合的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:11)

您的模型有公共字段,但没有公共属性,这些不一样。

更改为:

public class CustomerModel
{
    [Required] 
    public Guid Id {get; set;}

    [Required]
    public string Name {get; set;}

    [Required]
    public string Description {get; set;}
}

默认的MVC模型绑定器将使用属性,而不是字段。

有关此内容的更多信息 - http://rightbrainleft.net/2011/02/default-mvc-model-binder-doesnt-like-fields/