2010-10-07 28 views
3

動態驗證工作正常對MVC 2

[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; } 
} 

但如何如果Area_Validation動態創建?例如認購場是在後端可以由用戶創建,並最終像這樣:

alt text

如何設置的自動驗證每場?

目前我正在做:

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>(); 
    } 
} 

,我想設置在所有Fields財產

換句話說,這Fields從數據庫填平,可以有幾種類型,可以是string,number,dropdown等...有點像MailChimp字段屬性:

alt text

是有辦法做到這一點programmaticaly或者我需要建立一個jQuery插件來驗證它,並停止使用使用驗證的MVC2?

謝謝

回答

0

我不認爲你可以用Data Annotations屬性來做到這一點。

Codeplex中有一個名爲Fluent Validation的項目,它允許您使用.Net代碼以流暢的方式添加驗證規則。我從來沒有使用過這個項目,但似乎可以幫助你動態創建對象。

希望它有幫助!

+0

你好再次:)我只是想在它上面添加一些jQuery來驗證使用類命名約定,因爲我知道什麼類型,如果它是必需的......這一切只是爲了使用JavaScript,如在控制器我總是可以返回錯誤,只是想做正確的事情,並保存到服務器的往返旅程:) - **我會**看看這個項目。 – balexandre 2010-10-11 13:42:41

+0

那麼...請讓我更新這個!還可以看看這個jQuery插件:'http:// bassistance.de/jquery-plugins/jquery-plugin-validation /'。它與asp.net mvc無縫集成,是一個非常好的插件,可以幫助您滿足您的需求... – Lorenzo 2010-10-11 14:18:33

1

實際上,您可以製作多種驗證方案,每種類型一種(如果需要,也可以是更多類型)。然後在創建類型時添加此驗證規則。當您需要驗證時,您可以調用模板驗證方法,它將檢查這些規則是否會將錯誤添加到ModelState中,以便您能夠在前端顯示。

事實上,它不是有利於添加任何屬性,作爲屬性親是你可以裝飾你的類型與他們。當你在做一些動態的事情時,你最好有一些動態的方法來添加驗證。