2011-09-21 15 views
7

Tengo un modelo que me gustaría tener una página de actualización masiva, pero estoy teniendo problemas.mvc3 formulario para un IEnumerable

Mi modelo de vista:

public class ApproveView 
{ 

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

} 

En mi punto de vista que tienen:

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

Este bucles sobre mis objetos e imprime el formulario. El problema es que todos los campos del mismo tipo tienen el mismo nombre. Entonces, por ejemplo, todos mis botones de radio están conectados y solo puedo seleccionar uno.

¿cómo puedo hacer que los nombres de cada campo sean únicos y estén asociados con ese objeto? ¿Estoy incluso en el camino correcto o hay una mejor manera de hacer esto?

Respuesta

0

También podría hacerlo un poco más de forma manual:

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

Hola. Soy muy nuevo en .net. ¿Cómo sería el código de ahorro en el controlador buscar algo como esto? Lo tengo para mostrar pero no puedo encontrar la manera de guardarlo en mi modelo. – lovefaithswing

Cuestiones relacionadas