Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 ASP.NET MVC4模型未绑定_Asp.net Mvc 4_Model Binding - Fatal编程技术网

Asp.net mvc 4 ASP.NET MVC4模型未绑定

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]

我有一个非常简单的ASP.NETMVC4页面。它正在呈现CustomerModel的编辑表单。表单显示正确,但当我点击edit and post back时,模型没有被绑定。相反,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);
    }
最后,这里是表单集合的屏幕截图,其中包含填充的值:


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

改为:

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

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

    [Required]
    public string Description {get; set;}
}
默认的MVC模型绑定器将使用属性,而不是字段


关于这方面的更多信息-

我没有看到你的防伪令牌。你希望在哪里看到它?我在视图中有它,在方法上有validate属性。它必须在您的表单中,而不仅仅是在您的视图中。它必须在提交的表单集合值中。哈!就这样。可能永远也不会知道。谢谢