2011-03-22 48 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