1

我将一个 ViewModel 用于两个操作:创建和更新。但场

通用文件

(具有必需属性)位于创建视图中。因此 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

3 回答 3

4

有一个继承 UnitViewModel 的 CreateViewModel

public class CreateViewModel : UnitViewModel 
{
    [Required(ErrorMessage = "Required field")] 
    [FileAttribute(AllowedFileExtensions = new string [] { ".xls", ".xlsx" })]
    public HttpPostedFileBase CommonFile { get; set; }
}
于 2013-07-26T21:13:02.393 回答
0

这是一个面向对象的问题。创建一个 BaseUnitViewModel,它包含除 CommonFile 之外的所有内容,然后使用 CommonFile 从中派生出需要它的方法。

于 2013-07-26T21:12:48.943 回答
0

尽管 Bigfellahull 的解决方案是一种更好的方法,但在更新操作中,您可以检查 ModelError,然后如果错误与字段 CommonFile 相关,则忽略它。

于 2013-07-26T22:43:40.457 回答