2011-12-20 7 views
1

内側:ID属性がされているので、Html.LabelFor私は次のコードを持っているループ

<% foreach (var orderDetail in Model.OrderDetails) { %> 
    <div><%= Html.LabelFor(x => orderDetail.DateOfBirth)%></div> 
    <div><%= Html.TextBoxFor(x => orderDetail.DateOfBirth) %></div> 
<% } %> 

情報が表示されている、しかし、私はラベルをクリックすると、テキストボックスに行くことができないがforeachループのために繰り返されます。

<label for="orderDetail_DateOfBirth">DateOfBirth</label> 
<input type="text" value="" name="orderDetail.DateOfBirth" id="orderDetail_DateOfBirth"> 

これを修正する方法を知っている人はいますか?

UPDATE:

私はのUpdateModel()はどちらか動作しませんでしたから、それを任意の考えをこのようにやってしまいましたか?

<% 
    int i = 0; 
    foreach (var orderDetail in Model.OrderDetails) { %> 

     <div><label for="DateOfBirth_<%=i %>_">Date of Birth</label></div> 
     <div><%= Html.TextBox("DateOfBirth[" + i + "]", orderDetail.DateOfBirth) %></div> 

<% i++ 
    } %> 

答えて

0

私はIDを定義するためにhtmlAttributesを使用するループ

の内側にカスタムIDを作成することができます。 のような:

<% 
     int i = 0; 
     foreach (var orderDetail in Model.OrderDetails) { 

      %> 

    <div><%= Html.LabelFor(x => orderDetail.DateOfBirth)%></div> 
    <div><%= Html.TextBoxFor(x => orderDetail.DateOfBirth, new { id = "orderDetailDateOfBirth_" + i++ })%></div> 
<% } %> 

それとも、使用することができます。

のjQueryを使用すると、$(this)を使用した上でクリックしたオブジェクトを識別するために

+0

ラベルは、名前が異なるため、idが指しているものを知らない。 – Dean

1

はフィルハーク

からこの記事を見ていますそれはコントロールをループし、配列インデックスやその他もろもろを使用して語る記事の下の方に

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

あなたのシナリオに合わせて調整した基本的な構文は次のとおりです。

<% for (int i = 0; i < Model.OrderDetails.count; i++) { %> 

    <%: Html.LabelForm(m => Model.OrderDetails[i].DateOfBirth) %> 
    <%: Html.TextBoxFor(m => Model.OrderDetails[i].DateOfBirth) %> 

<% } %> 

これを適切に処理するためのモデルバインダーでは、順次インデックスが必要です。しかしそれ以外は、これはうまくいくはずです。

+0

これはうまくいきませんでした。これは、forとidが異なる: Dean

+0

hmmmmmmmmm、まあ、そうではありません。私はIDが[]を持つことができないと思います。 エディタテンプレートを使用しようとしましたか? – Patricia

関連する問題