我开始研究我在学校的第一个严肃的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; }
}
答案 0 :(得分:1)
您可以从控制器中的模型状态中删除错误,例如
this.ModelState[key].Errors.Clear();
其中key是要清除的位,所以如果它是电子邮件,则最有可能 -
this.ModelState["Customer.Email"].Errors.Clear();