2011-09-21 16 views
7

Mam model, który chciałbym mieć stronę aktualizacji masy, ale mam problemy.Formularz mvc3 dla IEnumerable

Moje ViewModel:

public class ApproveView 
{ 

    public IEnumerable<MyObject> ObjectList { get; set; } 

} 

moim zdaniem mam:

foreach (var item in Model.ObjectList) 
{ 
    <div> 


    <table class="form" width="100%"> 
     <tr> 

      <td>@Html.LabelFor(model => item.Accurate)<br /> 
      @Html.RadioButtonFor(model => item.Accurate, true) Yes 
      @Html.RadioButtonFor(model => item.Accurate, false) No 
      @Html.ValidationMessageFor(model => item.Accurate) 
      </td> 
      <td> 
      @Html.LabelFor(model => item.Comments)<br /> 
      @Html.TextAreaFor(model => item.Comments)<br /> 
      @Html.ValidationMessageFor(model => item.Comments) 
      </td> 
     </tr> 

    </table> 

    @Html.HiddenFor(model => item.ID) 
    @Html.HiddenFor(model => item.CreatedOn) 
    @Html.HiddenFor(model => item.CreatedBy) 
    @Html.HiddenFor(model => item.ModifiedOn) 
    @Html.HiddenFor(model => item.ModifiedBy) 
    <hr /> 
} 

To pętle nad moimi obiektami i drukuje formularz. Problem polega na tym, że wszystkie pola tego samego typu mają tę samą nazwę. Na przykład wszystkie moje przyciski opcji są połączone i mogę wybrać tylko jeden.

Jak ustawić nazwy dla każdego pola unikalne i powiązane z tym obiektem? Czy jestem na dobrej drodze, czy jest lepszy sposób na zrobienie tego?

Odpowiedz

0

Można również zrobić to nieco bardziej ręcznie:

@{var count = 0;} 
    @foreach (var item in Model.ObjectList){ 
      <div> 
       <table class="form"> 
        <tr> 
         <td>@Html.Label("Accurate" + count, item.Accurate)<br /> 
          @Html.RadioButton("AccurateTrue" + count, true) Yes 
          @Html.RadioButton("AccurateFalse" + count, false) No 
          @Html.ValidationMessage("ValidationAccurate" + count, item.Accurate) 
         </td> 
         <td> 
          @Html.Label("CommentsLabel" + count, item.Comments)<br /> 
          @Html.TextArea("Comments" + count, item.Comments)<br /> 
          @Html.ValidationMessage("ValidationComment" + count, item.Comments) 
         </td> 
        </tr> 
       </table> 
       @Html.Hidden("ID" + count, item.ID) 
       @Html.Hidden("CreatedOn" + count, item.CreatedOn) 
       @Html.Hidden("CreatedBy" + count, item.CreatedBy) 
       @Html.Hidden("ModifiedOn" + count, item.ModifiedOn) 
       @Html.Hidden("ModifiedBy" + count, item.ModifiedBy) 
       <hr /> 
       @count++; 
@} 
+0

cześć. Jestem bardzo nowy w .net. W jaki sposób zapisujący się kod w kontrolerze szuka czegoś takiego? Mam to do wyświetlenia, ale nie mogę wymyślić, jak zapisać go do mojego modelu. – lovefaithswing