2011-08-01 100 views
0

ThingController創建一個模型,其中包含(除其他屬性外)一系列事物。這些可以在視圖編輯像這樣:ASP.NET MVC不顯眼的客戶端驗證多個模型

<form action="@Url.Action("Update", "Thing")" method="post">   
    <table> 
     <tr> 
      <th>Foo</th> 
      <th>Bar</th> 
     </tr>   
      @foreach (var thing in ViewData.Model.Things) 
      {     
       <tr class="raw-data"> 
        <td class="raw-data"><input name="things[@rowCount].Foo" class="raw-data" readonly="readonly" type="text" value="@thing.Foo" /></td> 
        <td class="raw-data"><input name="things[@rowCount].Bar" class="raw-data" type="text" value="@thing.Bar" /></td> 
       </tr>     
       rowCount++; 
      } 
    </table> 

    <br /> 
    <input type="submit" value="OK" />  
</form> 

控制器包含以下動作,它允許多個觀光同時更新:

public ActionResult Update(ThingModel[] things) 
{ 
    ... 
}  

我已經添加一些驗證屬性性質上Thing類:

[Required] 
[Range(0, 500000, ErrorMessage = "Foo must be within 0 and 500,000.")] 
public double Foo{ get; set; } 

[Required] 
[Range(0, 500000, ErrorMessage = "Bar must be within 0 and 500,000.")] 
public double Bar { get; set; } 

的事情是,我無法弄清楚如何使用TextBoxFor助手等添加不顯眼的驗證

在這一點上,我認爲正確的方法是用驗證屬性手動標記輸入字段,但我想知道是否有人可以指向我的一些文檔,教程等演示使用助手,多個模型不顯眼的驗證?

回答

2

我有類似的問題,用戶可以動態地添加多個電子郵件到他們的帳戶。 我通過手動添加驗證來修復它與Jquery。你應該給你的表單一個名稱,並將驗證添加到所有項目。它應該是這樣的我堅固的東西:

$('#frmYourForm').validate(); 
    for (var i = 0; i < 'CountOfAllFields'; i++) { 
     $('#Things_' + i + '__Foo').rules('add', { required: true, messages: { required: 'The Foo field is required'} }); 
     $('#Things_' + i + '__Bar').rules('add', { required: true, messages: { required: 'The Bar field is required'} }); 
    } 

鍵入我的記憶,所以如果我犯了一個錯誤不要射我。我不知道Range thingy的確切語法,但是您應該查看Jquery.validate文件。