Asp.net mvc MVC 3-带注释的表单验证

Asp.net mvc MVC 3-带注释的表单验证,asp.net-mvc,Asp.net Mvc,MVC 3中的远程注释允许您调用“操作”为您进行属性数据验证。真漂亮!还是真的 问题:下面的远程注释请参阅客户端中的注释调用代码!!我的角色课是模特。我喜欢remote,因为我不需要编写自定义验证器 我应该使用对象视图模型模式并在其中复制属性“Role.Name”吗?那就行了。还有一个问题:我如何才能真正避免“不重复自己的原则”?在对象视图中具有带注释的属性,然后在模型中具有相同的属性是否有效?我的意思是,这对于分离关注点来说是不是太多了 我只是在尝试正确地设计这个网站,并应用正确的设计原则,这

MVC 3中的远程注释允许您调用“操作”为您进行属性数据验证。真漂亮!还是真的

问题:下面的远程注释请参阅客户端中的注释调用代码!!我的角色课是模特。我喜欢remote,因为我不需要编写自定义验证器

我应该使用对象视图模型模式并在其中复制属性“Role.Name”吗?那就行了。还有一个问题:我如何才能真正避免“不重复自己的原则”?在对象视图中具有带注释的属性,然后在模型中具有相同的属性是否有效?我的意思是,这对于分离关注点来说是不是太多了

我只是在尝试正确地设计这个网站,并应用正确的设计原则,这样当这个网站在代码方面发展时,我就不会被烧掉

最好的方法是什么

namespace StartWeb.Model.ObjectModel
{
 public class Role  //this class is in the Model (see namespace) and it needs to be "client agnostic”
    {

         //Then, this annotation is NOT client agnostic, it calls a controller:
        [Remote("ValidateRoleName", "Role", AdditionalFields="InitialRoleName", ErrorMessage = "Role Name already exists")]
        public  string Name { get; set; }
这是客户端RoleControl操作中的验证代码:

    [HttpGet]
    [OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
    public JsonResult ValidateRoleName(string name, string initialRoleName)
    {
        bool isValid = true;
        if (name != initialRoleName) isValid = !(new SecurityFacade().IsRoleNameExist(name));           
        return Json(isValid, JsonRequestBehavior.AllowGet);
    }

在进一步研究之后,我发现了这个开源工具,它可以为您从不同层映射实体提供繁重的工作: