validation之ASP.NET MVC 3 : unobtrusive JavaScript validation

lautakyan007 阅读:200 2025-06-02 22:19:02 评论:0

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),我也会推荐使用这种方法。

Why use ViewModels instead of Domain Models in Views.


标签:JavaScript
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号