有a lot of examples关于如何“创建自己的模型”。用 DataAnnotations 标记它们。 Scott Guthrie解释如何 validate your model使用 ORM 时.我没有发现您的模型实际上是从外部 DLL 传入的。你如何验证它?
例子:
/* Class coming in from an third-party DLL file. */
public class Person
{
public string Name{get;set;}
public int Age {get;set;}
}
我想到的解决方案:继承外部类,然后将[MetadataType]应用到继承类。
[Metadata(typeof(Person2_Validation))]
public class Person2:Person{}
public class Person2_Validation
{
[Required,Stringlength(50,ErrorMessage="Name required"]
public string Name{get;set;}
[RegularExpression("([0-9]+)")]
public int Age
}
有没有更好的办法?
最佳答案
您可以创建一个模型并使用 Mapper(例如 AutoMapper 或 EmitMapper 或 ValueInjecter)在您的对象之间进行映射,并针对映射的模型进行验证。
当您需要将对象传回时,您可以在您的模型与接收到的模型之间进行映射。
这与 ASP.NET MVC 中的 ViewModel 方法非常相似。
所以它是这样的:
A 类(DLL 中的类) B类(你的模型)
您在 B 上设置所有注释,并创建您需要的任何属性。
您使用的是 B。当您从存储库/源中获取某些内容时,您映射(复制所有相关值)A=>B 并将其发送(假设为 View 中的模型)。
当您收到返回的 B 时,您对其进行验证,然后将其映射为 B=>A 的另一种方式,并将其发送到存储库/服务。
顺便说一句:即使模型 A 是您的类(class),我也会推荐使用这种方法。
关于validation - ASP.NET MVC 3 : unobtrusive JavaScript validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206200/