Asp.net mvc asp.net mvc复选框/单选按钮矩阵模型绑定

Asp.net mvc asp.net mvc复选框/单选按钮矩阵模型绑定,asp.net-mvc,checkbox,model-binding,Asp.net Mvc,Checkbox,Model Binding,我有一个带有复选框/单选按钮列表和矩阵的动态表单: 以下代码呈现复选框列表: @foreach (var sq in Model.SubQuestions) { <label> <input type="hidden" name="answerResult.index" value="@sq.Id" /> <input type="checkbox" name="answerResult[@sq.Id].SubQuestio

我有一个带有复选框/单选按钮列表和矩阵的动态表单:

以下代码呈现复选框列表:

@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>
}
@foreach(模型子问题中的变量sq)
{
@sq.Label.Name
}
单选按钮列表:

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

@foreach(模型子问题中的var sq)
{
@sq.Label.Name
}
我在控制器中的POST操作:

[HttpPost]
public ActionResult PassageSurvey(int surveyId, int surveyPageIndex, IList<AnswerResult> answerResult)
[HttpPost]
公共行动结果调查(int surveyId、int surveyPageIndex、IList answerResult)
其中,
IList
是来自我的表单的自动绑定集合。我只获取已选中/选中的项目。一切进展顺利

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

单选按钮矩阵:

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

@foreach(模型中的var av.应答变量)
{
@av.Label.Name
}
@foreach(模型子问题中的var sq)
{
@sq.Label.Name
@foreach(模型中的var av.应答变量)
{   
}
}
复选框矩阵:

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

@foreach(模型中的var av.应答变量)
{
@av.Label.Name
}
@foreach(模型子问题中的var sq)
{
@sq.Label.Name
@foreach(模型中的var av.应答变量)
{   
}
}
控制器中的POST操作始终相同。 现在从单选按钮矩阵(在当前示例3x3中)
IList
始终获取3个项目,具体取决于在行和列中选择的项目。 但从复选框矩阵(3x3)
IList
始终获取所有9项(无论是否选中了项,隐藏的输入始终具有值)


但我只想获取已选中的项目。如何更改复选框矩阵模板以解决此问题?

最后,我决定在我的后期操作中处理此问题。正在删除未选中的项目(复选框),并且在
answerResult[###].subquestion id
字段中有
null

最后,我决定在我的post操作中处理此问题。正在删除未选中的项目(复选框),并且在
answerResult[##].子问题ID
字段中有
null