我使用一个ViewModel进行两项操作:创建和更新。 但是字段
CommonFile
(带必需属性)位于“创建”视图中。因此更新操作中ModelState.IsValid为false。如何在这两个视图中使用一个模型视图?
public class UnitViewModel
{
public int Id { get; set; }
[Required(ErrorMessage = "Required field")]
[StringLength(256, ErrorMessage = "SomeMessage")]
public string Title { get; set; }
public string Code { get; set; }
[Required(ErrorMessage = "Required field")]
[DateAttribute(ErrorMessage = "Incorrect date format")]
public string MapDeadline { get; set; }
public int InAllCount { get; set; }
public int LoadedCount { get; set; }
[Required(ErrorMessage = "Required field")]
[FileAttribute(AllowedFileExtensions = new string [] { ".xls", ".xlsx" })]
public HttpPostedFileBase CommonFile { get; set; }
}
答案 0 :(得分:4)
拥有一个继承UnitViewModel的CreateViewModel
public class CreateViewModel : UnitViewModel
{
[Required(ErrorMessage = "Required field")]
[FileAttribute(AllowedFileExtensions = new string [] { ".xls", ".xlsx" })]
public HttpPostedFileBase CommonFile { get; set; }
}
答案 1 :(得分:0)
这是一个OO问题。创建一个BaseUnitViewModel,它包含除CommonFile之外的所有内容,然后使用CommonFile从中派生出需要它的方法。
答案 2 :(得分:0)
尽管Bigfellahull的解决方案是一种更好的方法,但在更新操作中,您可以检查ModelError,然后如果错误与字段CommonFile相关,则忽略它。