validation - ASP.NET MVC 3 : unobtrusive JavaScript validation

标签 validation asp.net-mvc-3 unobtrusive-javascript

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.

关于validation - ASP.NET MVC 3 : unobtrusive JavaScript validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206200/

相关文章:

c# - 不同文化的日期时间转换

jquery - MVC 3 和 "Javascript-Disabled"浏览器

ruby-on-rails-3 - accpets_nested_attributes_for、HABTM 和 find_or_create

c# - 根据一组规则验证日期

c# - 当流文件完成使用 ASPNET MVC 3 下载时执行某些操作

jquery - 如何使用 jQuery 创建网站游览

javascript - 如何在 helper 中使用 unobustrive JS 重构 link_to_function ?

jquery - Rails 中不显眼的 jQuery 自动完成

validation - Grail 的错误属性从何而来?

validation - 处理 Scalaz6 验证列表