MVC 4:FormCollection不返回单选按钮

时间:2014-01-19 14:51:23

标签: c# asp.net-mvc razor

我在Razor-View中动态创建控件。在这里,我根据对象中的数据向DOM添加一些控件。但是当我尝试添加一个单选按钮时,除非值不变,否则我不会得到它。如果我动态添加两个具有不同值的单选按钮,FormCollection不会包含这些控件。

请帮助我,因为我无法理解这种行为。理想情况下,它应该刚刚收集了两个单选按钮。

foreach (var property in propertiesInner)
{
    if (property.Name == "OptionQuestion")
    {
        if (@item.ObjQuestions.QuestionType == 4)
        {
            <td>
                <table>                
                    <tr>
                        <td>
                            @Html.RadioButton("RadTF", UniqueValue
                            , false, new { id = "RadTF",  @style = "width:auto;background:none;border:none" })
                            @property.GetValue(itemInner, null)
                        </td>
                    </tr>
                </table>
            </td>
        }
        else if (@item.ObjQuestions.QuestionType == 1) 
        { 
            <td>
                <table>
                    <tr>
                        <td>
                            @Html.CheckBox("Chk"+@item.QuestionCode.ToString()+UniqueValue
                            , false, new { id = "Chk"+@item.QuestionCode.ToString()+UniqueValue
                                , @style = "width:auto;background:none;border:none" })
                            @property.GetValue(itemInner, null)
                        </td>
                    </tr>
                </table>
            </td>
        }
    }

}

编辑1: UniqueValue 是我的forloop变量。为了给每个按钮一个唯一的值。我也尝试将这个唯一的变量连接到我的id上:

@Html.RadioButton("RadTF"+UniqueValue, UniqueValue
, false, new { id = "RadTF"+UniqueValue
,  @style = "width:auto;background:none;border:none" })

值是常数 意味着,如果我生成具有相同值的单选按钮,我会在帖子中看到它们(或者更确切地说是其中之一)。

1 个答案:

答案 0 :(得分:1)

对于您的单选按钮组,您必须确保每个单选按钮:

  • 有一个独特的id
  • 具有相同的name

name属性将不同的单选按钮组合在一起。你正在使用这个重载:

public IHtmlString RadioButton(
    string name,
    Object value,
    bool isChecked,
    Object htmlAttributes
)

你可以尝试这个来创建单选按钮:

@Html.RadioButton("RadTF", UniqueProperty, false, new { id = "RadTF"+UniqueValue,  style = "width:auto;background:none;border:none" })

如果您仍有问题,请发布已呈现表单的标记。