2011-08-01 10 views
0

ThingControllerは、(他のプロパティの中で)物のコレクションを含むモデルを作成します。これらは、そのようなビューで編集することができます。複数のモデルによるASP.NET MVCの目立たないクライアントの検証

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

は、私はいくつかの検証が上のプロパティに属性を追加しました:

<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> 

コントローラは、複数のものを同時に更新することができ、次のアクションが含まれていシングクラスは:

[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ファイルを見てください。

関連する問題