【问题标题】:How can I bind a list of radioes with dynamic binding?如何使用动态绑定绑定无线电列表?
【发布时间】:2013-08-25 13:08:40
【问题描述】:

我想在我的控制器中绑定一个控件列表。

我对文本框、复选框或下拉菜单没有任何问题。

例如,

@Html.TextBox("tblContactPhones[0].description")
@Html.DropDownList("tblContactPhones[0].phoneLable", PhoneType)
@Html.TextBox("tblContactPhones[1].description")
@Html.DropDownList("tblContactPhones[1].phoneLable", PhoneType)

它们具有相同的名称,可以在我的控制器中动态绑定。

public virtual ActionResult Create(tblContact entity)

你看到这些名字不一样

但我不能为广播组这样做。

它们必须具有相同的名称才能正确选择。

我无法将它绑定到列表中。

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 binding radio dynamic-binding


    【解决方案1】:

    您无需担心名称。

    @Html.RadioButton() 助手的主要重载如下:

    @Html.RadioButton(string name, object value)
    @Html.RadioButton(string name, object value, bool isChecked)
    

    所以:

    1) 如果您想要 2 个 rdoBtns 作为真/假方式:

    @Html.RadioButton("IsSomething", true)
    @Html.RadioButton("isSomething", false)
    

    2) 如果你有一个值的集合——例如一个枚举:

    @Html.RadioButton("FavoriteItem", MyEnum.Item1)
    @Html.RadioButton("FavoriteItem", MyEnum.Item2)
    @Html.RadioButton("FavoriteItem", MyEnum.Item3)
    @Html.RadioButton("FavoriteItem", MyEnum.Item4)
    

    请注意,您可以将 true 值作为第三个参数传递给帮助程序,以指示默认情况下应检查该项目:

    // This rdo is selected by default
    @Html.RadioButton("FavoriteItem", MyEnum.Item1, true) 
    @Html.RadioButton("FavoriteItem", MyEnum.Item2)
    // other rdoBtns ...
    

    【讨论】:

    • 谢谢你。但是你没有说任何关于绑定的事情。我的问题是动态单选按钮列表绑定。
    • @VBYOFSKI - 正如你所说你不想使用模型绑定和 html 助手,我认为你已经处理了......服务器端的手动模型绑定可以通过使用 @ 来实现987654327@ 或FormCollection。如果这个提示还不够,请告诉我,以便我更新我的答案...