entity-framework-4 - ASP.NET mvc如何覆盖 Entity Framework 验证错误消息

  显示原文与译文双语对照的内容

我有一个支持多个 ASP.NET web应用程序的Entity Framework 4.1模型。 我使用DataAnnotations来定义和本地化标签文本和验证规则和错误消息。

对于某些应用程序,我需要特定字段的标签文本与标准定义的文本不同。 对于标签本身来说,这很容易实现: 从本地资源文件中检索需要的文本,该文件与视图关联。 但是,标签文本也在验证错误消息中使用,例如"。{fieldname}的最大长度必须为 50个字符"。

如何在不更改模型类上的注释的情况下更改验证消息的最佳方式?

时间: 原作者:

你已经将验证与实体模型相耦合。 避免这种方法的方法是从实体创建视图模型,并将验证放到。

示例:如果你有实体。


public class Product


{


 public string Name {get; set;}


}



你可以创建两种不同的视图模型:


public class ProductPageViewModel1


{


 [Required]


 public string Name {get; set;}


}



public class ProductPageViewModel2


{


 [DisplayName("Foo")]


 public string Name {get; set;}



}

将实体映射到视图模型并在视图中使用这些视图。

尝试针对特定情况重新定义控制器中的错误消息,如下所示:

模型:


public class Company


 {


 [Required(ErrorMessage ="The field is required")]


 public string CompanyName { get; set; }


 public string Address { get; set; }


 }



控制器:


 [HttpPost]


 public ActionResult Index(Company company)


 {


 if(ModelState.IsValid)


 {


//your code


 }



//your custom validation message here


 if (ModelState["CompanyName"].Errors.Any())


 ModelState["CompanyName"].Errors[0] = new ModelError("custom error message");



 return View();


 }



原作者:
...