2013-07-26 88 views
1

我正在使用一个ViewModel进行两项操作:创建和更新。 但是字段asp mvc viewmodel验证属性

CommonFile

(具有所需属性)位于创建视图。所以ModelState.IsValid在更新操作中是错误的。如何在这两个视图中使用一个模型视图?

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; } 
} 

回答

4

有继承UnitViewModel

public class CreateViewModel : UnitViewModel 
{ 
    [Required(ErrorMessage = "Required field")] 
    [FileAttribute(AllowedFileExtensions = new string [] { ".xls", ".xlsx" })] 
    public HttpPostedFileBase CommonFile { get; set; } 
} 
0

这是一个OO问题。创建一个BaseUnitViewModel,它具有除CommonFile以外的所有内容,然后使用CommonFile从它得到需要它的方法。

0

虽然Bigfellahull的解决方案是一个更好的方法,在更新动作可以检查ModelError那么如果错误是到现场CommonFile相关,只是忽略它CreateViewModel。