Asp.net mvc 2 MVC2 TRYUpdate模型';包括不忽略未包含字段的验证的属性

Asp.net mvc 2 MVC2 TRYUpdate模型';包括不忽略未包含字段的验证的属性,asp.net-mvc-2,validation,Asp.net Mvc 2,Validation,我的MVC2应用程序中有一个表单,允许用户从模型对象更新一组字段,这纯粹是一个更新,因为模型对象已经存在,并且输入了它所需的字段。但是,当我尝试更新一小部分字段并在模型对象上调用TryUpdateModel时,它失败了,并且基于已填写的必填字段,我的modelstate出现了错误 这是我的控制器代码: [HttpPost] public ActionResult Work(int id, FormCollection forms) { var lead = claimRepo.GetLe

我的MVC2应用程序中有一个表单,允许用户从模型对象更新一组字段,这纯粹是一个更新,因为模型对象已经存在,并且输入了它所需的字段。但是,当我尝试更新一小部分字段并在模型对象上调用
TryUpdateModel
时,它失败了,并且基于已填写的必填字段,我的modelstate出现了错误

这是我的控制器代码:

[HttpPost]
public ActionResult Work(int id, FormCollection forms)
{
    var lead = claimRepo.GetLeadByID(id);
    if (lead == null)
        return View("NotFound");
    if (TryUpdateModel(lead, "Lead")) {...}
}
我甚至尝试过明确说明哪些字段要像这样更新

TryUpdateModel(lead, "Lead", new string[] { "Date", "UserID", ...}) {...}
但它仍然失败了,有什么原因不忽略对未包含字段的验证,或者我做错了什么吗

谢谢

编辑

我发现了这个问题,我的类中有一个属性不是数据库支持的,并且在元数据中标记为必需的,因此添加一个getter和setter来返回该属性所表示的内容导致
TryUpdateModel
通过,但是我仍然很好奇为什么属性的显式包含没有忽略我没有包含的字段

另一次编辑


我有一个用户模型以及所有数据库支持的必填字段,如果试图明确说明哪些字段正在更新,仍然会导致表单中缺少的字段出现modelstate错误,但是从正在更新的数据库中填充模型对象。

我不确定默认行为何时更改为仅验证传入数据,据我所知,我认为只有asp.net mvc1支持它,然后它在asp.net mvc2中更改了,您可以说[Validate(false)]并允许部分数据通过并手动执行一些验证。如果需要,可以使用ViewModel并验证视图模型上的所有字段作为第二个选项。一个有用的链接: