asp mvc viewmodel验证属性

时间:2013-07-26 21:10:26

标签: c# asp.net-mvc

我使用一个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; }
}

3 个答案:

答案 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相关,则忽略它。