禁止在ViewModel中使用默认模型数据注释

时间:2015-06-28 18:27:06

标签: asp.net-mvc

我开始研究我在学校的第一个严肃的MVC项目而没有首先定义模型的数据注释(因此没有设置“必需”注释,限制属性名称的大小等)。我使用viewmodel,在添加注释后,模型在发布表单时导致我的ViewModel状态无效。

好像是导致问题所需的电子邮件。它不用于viewmodel和表单,似乎viewmodel期望它会得到它。有没有办法通过在viewmodel(或控制器)中设置一些限制来停止要求此字段。我真的不想改变应用程序的结构(如果我从头开始,我可能会做这个有点不同,但没有多少时间来完成项目)

客户(型号)

public Class Customer(){
    public int Id { get; set; }

    [Required(ErrorMessage = "Required")]
    [StringLength(25, ErrorMessage = "Message"]
    public string Name { get; set; }

    public string Logo { get; set; }

    //[Required(ErrorMessage = "Email required")]
    //[Display(Name = "E-mail")]
    //[RegularExpression(xxxx, ErrorMessage = "not correct")]
    public string Email { get; set; }

    public int UserId { get; set; }
}

视图模型

public class CustomerEditViewModel
        {
        public Customer Customer { get; set; }

        [FileTypes("jpg,jpeg,png")]
        [FileSize(1024 * 1024, ErrorMessage = "Max x bytes")]
        public HttpPostedFileBase File { get; set; }
        }

1 个答案:

答案 0 :(得分:1)

您可以从控制器中的模型状态中删除错误,例如

   this.ModelState[key].Errors.Clear();

其中key是要清除的位,所以如果它是电子邮件,则最有可能 -

   this.ModelState["Customer.Email"].Errors.Clear();