0

我的模型中有以下属性:

[Display(Name = "ActivityModel_FlashFile", ResourceType = typeof(App_GlobalResources.Models))]
[Required(ErrorMessageResourceName = "ActivityModel_FlashFile_Required", ErrorMessageResourceType = typeof(App_GlobalResources.Models))]
public string FlashFile { get; set; }   

在我的控制器中,我这样做:

 ModelState.Remove("FlashFile");
 model.FlashFile = "1";
 try
 {
    this.UpdateModel(model);
 }
 catch (Exception ex)
 {
    string allErrors=string.Join(",",ModelState.Values.SelectMany(v => v.Errors).Select(e=>e.ErrorMessage));
 ...

(当我们到达这个片段的开头时,FlashFile 是空的)。
然而,此时allErrors是“需要 Flash 文件”。

(我从这里接受了这样做的想法)。

如何避免验证 FlashFile 属性?

4

1 回答 1

0

如何避免验证 FlashFile 属性?

通过使用适合此视图要求的视图模型。这是正确的方法。如果FlashFile不需要该属性,则设计一个视图模型,该模型上没有Required此操作的属性。

解决此问题的错误方法是尝试重用您的域模型,然后从模型绑定中排除您不想要的属性:

try
{
    this.UpdateModel(model, null, null, new[] { "FlashFile" });
    model.FlashFile = "1";
}
catch (Exception ex)
{
    string allErrors = string.Join(
        ",", 
        ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage)
    );
    ...
}
于 2012-08-27T08:54:58.780 回答