2011-04-03 12 views
2

私はasp.net mvc 3で別の名前属性名を作成する方法は?

public class ViewModel1 
{ 
    // some properties here 
    public List<ViewModel2> ViewModel2 {get; set;} 
} 

public class ViewModel2 
{ 
    public string A {get; set;} 
    public string B {get; set;} 
} 

// view 

<table> 
    <thead> 
    <tr> a </tr> 
    <tr> b </tr> 
    </thead> 
    <tbody> 
     // need to generate all ViewModel2 stuff in table row cell 
    </tbody> 
</table> 

を持っている私の問題は、私はこの

@foreach(var m in Model.ViewModel2) 
{ 
    <tr> 
    <td>@Html.CheckBoxFor(x => m.A) </td> 
    <td>@Html.CheckBoxFor(x => m.B) </td> 
    </tr> 
} 

のようにこれに伴う問題をforeachループを置く場合は、これらのチェックボックスのそれぞれがIDの同じとどのようなコースの同じ名前の属性を持っているということです有効なhtmlではありません。

私はそれらにidがないか、unquie idと一意の名前属性を持つことができますか?

私は部分的な見解をしようとしましたが、display templatesは私に同じ問題を与えています。私は考えることができる

唯一のものは

int i = 0 
    @foreach(var m in Model.ViewModel2) 
    { 
     <tr> 
     <td>@Html.CheckBoxFor(x => m.A, new {@name = m.a + i}) </td> 
     <td>@Html.CheckBoxFor(x => m.B) </td> 
     </tr> 
    } 

あるしかし、私はそれはそれを行うには恐ろしい方法だと思います。

答えて

3

ループはforeachループではなく、forループを使用してください。

@for(int i = 0; i < Model.ViewModel2.Length; i++) 
{ 
    <tr> 
    <td>@Html.CheckBoxFor(x => x.ViewModel2[i].A) </td> 
    <td>@Html.CheckBoxFor(x => x.ViewModel2[i].B) </td> 
    </tr> 
} 
関連する問題