Asp.net mvc 2 mvc2的动态验证

Asp.net mvc 2 mvc2的动态验证,asp.net-mvc-2,asp.net-mvc-validation,Asp.net Mvc 2,Asp.net Mvc Validation,这个很好用 [MetadataType(typeof(Area_Validation))] public partial class Area { ... } public class Area_Validation { [Required(ErrorMessage = "Please add this field.")] public int Email { get; set; } [Required(ErrorMessage = "Please add thi

这个很好用

 [MetadataType(typeof(Area_Validation))]
 public partial class Area
 {
    ...
 }

 public class Area_Validation
 {
 [Required(ErrorMessage = "Please add this field.")] 
 public int Email { get; set; }

 [Required(ErrorMessage = "Please add this field")]
 public string Name { get; set; }
 }
但是如果
区域验证
动态创建的呢?例如,用户可以在后端创建订阅字段,并以如下方式结束:

如何在每个字段上设置元数据以进行自动验证

目前我正在做:

public class SubscriberFormViewModel
{
    public List<SubscriberFieldModel> Fields { get; private set; }
    public Calendar Calendar { get; private set; }
    public Company Company { get; private set; }

    public SubscriberFormViewModel()
    { 
        // TODO: This is only for testing while validation is not set
    }
    public SubscriberFormViewModel(Decimal calendarId)
    {
        if (calendarId > 0)
        {
            SubscribersRepository db = new SubscribersRepository();

            Calendar calendar = db.GetCalendarById(calendarId);
            Company company = db.GetCompanyById(calendar.company_id);

            this.Fields = db.FindAllSubscriberFieldsByCalendar(calendarId);
            this.Calendar = calendar;
            this.Company = company;
        }
        else
            this.Fields = new List<SubscriberFieldModel>();
    }
}
公共类SubscriberFormViewModel
{
公共列表字段{get;private set;}
公共日历{get;private set;}
上市公司{get;private set;}
公共SubscriberFormViewModel()
{ 
//TODO:这仅用于未设置验证的测试
}
公共SubscriberFormViewModel(十进制日历ID)
{
如果(日历ID>0)
{
SubscribersRepository db=new SubscribersRepository();
Calendar Calendar=db.GetCalendarById(calendarId);
Company Company=db.getcompanybyd(calendar.Company\u id);
this.Fields=db.FindAllSubscriberFieldsByCalendar(calendarId);
这个。日历=日历;
这个公司=公司;
}
其他的
this.Fields=新列表();
}
}
我想在所有
字段
属性中设置元数据

换句话说,此
字段是从数据库填充的,可以有多种类型,可以是
字符串
数字
下拉列表
,等等。。。有点像MailChimp字段属性:

有没有办法完成这个程序呢?或者我需要创建一个jQuery插件来验证它,并停止使用MVC2中的使用验证


谢谢

我认为使用数据注释属性无法做到这一点

Codeplex中有一个名为的项目,允许您使用.Net代码以流畅的方式添加验证规则。我从未使用过该项目,但它似乎可以帮助您处理动态创建的对象


希望有帮助

实际上,您可以创建多个验证场景,每种类型一个(或者如果需要,每种类型多个)。然后在类型创建时添加此验证规则。当您需要验证时,您可以调用模板验证方法,该方法将检查这些规则是否正确,如果不正确,将向ModelState添加错误,您将能够在前端显示这些错误


实际上,添加任何属性都没有什么好处,因为attributes pro可以用它们装饰您的类型。当你在做一些动态的事情时,你最好有一些动态的方法来添加验证。

howdy:)我想在它上面添加一些jQuery来使用类命名约定进行验证,因为我知道它的类型以及它是否需要。。。这一切都是为了使用javascript来完成,因为在控制器中,我总是可以返回错误,只是想做正确的事情,并节省到服务器的往返时间:)-我会看看这个项目。好吧。。。请告诉我最新情况!还可以看看这个jQuery插件:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
。它与asp.net mvc无缝集成,是一个非常好的插件,可以帮助满足您的需求。。。