2011-03-22 46 views
1

我有一个复选框/单选按钮列表&矩阵动态形式:asp.net mvc的复选框/单选矩阵模型结合

checkbox & radio-button lists

下面的代码呈现复选框列表:

@foreach (var sq in Model.SubQuestions) 
{ 
    <label> 
     <input type="hidden" name="answerResult.index" value="@sq.Id" /> 
     <input type="checkbox" name="answerResult[@sq.Id].SubQuestionId" value="@sq.Id" /> 
     @sq.Label.Name 
    </label> 
} 

单选按钮列表:

<input type="hidden" name="answerResult.index" value="@Model.Id" /> 
@foreach (var sq in Model.SubQuestions) 
{ 
    <label> 
     <input type="radio" name="answerResult[@Model.Id].SubQuestionId" value="@sq.Id" /> 
     @sq.Label.Name 
    </label> 
} 

我的POS T-行动控制器:

[HttpPost] 
public ActionResult PassageSurvey(int surveyId, int surveyPageIndex, IList<AnswerResult> answerResult) 

其中IList<AnswerResult>是从我的形式自动绑定集合。我只收到检查/选择的项目。一切进行得都很顺利。

现在我需要从复选框/单选按钮矩阵中获取相同的集合。

checkbox & radio-button matrices

无线电按钮矩阵:

<table width="100%"> 
    <tr> 
     <th></th> 
     @foreach (var av in Model.AnswerVariants) 
     { 
      <th style="text-align: center;"> 
       <label>@av.Label.Name</label> 
      </th> 
     } 
    </tr> 

    @foreach (var sq in Model.SubQuestions) 
    { 
     <tr> 
      <td> 
       <label>@sq.Label.Name</label> 
       <input type="hidden" name="answerResult.index" value="@sq.Id" /> 
       <input type="hidden" name="answerResult[@sq.Id].SubQuestionId" value="@sq.Id" /> 
      </td> 

      @foreach (var av in Model.AnswerVariants) 
      { 
       <td align="center"> 
        <input type="radio" name="answerResult[@sq.Id].AnswerVariantId" value="@av.Id" /> 
       </td> 
      } 
     </tr> 
    } 
</table> 

复选框矩阵:在控制器

<table width="100%"> 
    <tr> 
     <th></th> 
     @foreach (var av in Model.AnswerVariants) 
     { 
      <th style="text-align: center;"> 
       <label>@av.Label.Name</label> 
      </th> 
     } 
    </tr> 

    @foreach (var sq in Model.SubQuestions) 
    { 
     <tr> 
      <td> 
       <label>@sq.Label.Name</label> 
      </td> 
      @foreach (var av in Model.AnswerVariants) 
      { 
       <td align="center"> 
        <input type="hidden" name="answerResult.index" value="@sq.Id" /> 
        <input type="hidden" name="answerResult[@sq.Id].AnswerVariantId" value="@sq.Id" /> 
        <input type="checkbox" name="answerResult[@sq.Id].SubQuestionId" value="@sq.Id" /> 
       </td> 
      } 
     </tr> 
    } 
</table> 

POST-动作总是相同的。 现在使用无线按钮矩阵(在当前样本3x3中)IList<AnswerResult>总是获取3个项目,具体取决于在行和列中选择的项目。 但从复选框矩阵(3×3)IList<AnswerResult>总是得到所有9个项目(不管项目进行了检查,隐藏的投入总是有值)

但我想的唯一项目,已检查。如何更改我的复选框矩阵模板来解决此问题?

回答

1

最后我决定在我的后续操作中处理这个问题。删除未选中的项目(复选框),并在answerResult[##].SubQuestionId字段中有nulls