无法在MVC中的表中插入单选按钮值

时间:2016-02-16 18:26:10

标签: asp.net-mvc-4

我有一个简单的反馈表单,用户只能选择一个

Good Better Best

这些是固定的文本和值,所以我很难对它进行编码。尝试过这些方法来获取它们的值,但这些尝试都没有起作用。

如何在表格中保存所选的单选按钮值,如何在编辑时保留它?

反馈是我的表和模型中的数据类型int列。

在所有情况下,0保存在任何选择上,尝试2错误,因为只显示一个单选按钮。

尝试1

        @Html.Label("Good")
        @Html.RadioButtonFor(model => model.FeedBack, false)

        @Html.Label("Better")
        @Html.RadioButtonFor(model => model.FeedBack, false)

        @Html.Label("Best")
        @Html.RadioButtonFor(model => model.FeedBack, false)

        @Html.Label("Excellent")
        @Html.RadioButtonFor(model => model.FeedBack, false)

尝试2

        @Html.RadioButtonFor(model => model.FeedBack,
        new List<SelectListItem>{new SelectListItem{Text="Good",Value = "1" },
        new SelectListItem { Text = "Better", Value = "2" },
        new SelectListItem { Text = "Best", Value = "3" },
        new SelectListItem { Text = "Excellent",Value="4" } })

尝试3

        @Html.RadioButton("rb", 1, isChecked: false)@Html.Label("Good")
        @Html.RadioButton("rb", 2, isChecked: false)@Html.Label("Better")
        @Html.RadioButton("rb", 3, isChecked: false)@Html.Label("Best")
        @Html.RadioButton("rb", 4, isChecked: false)@Html.Label("Excellent")

1 个答案:

答案 0 :(得分:2)

您已为所有单选按钮指定了false的值,该值不能绑定到int类型的属性。假设您的值为1(好)到4(优秀),那么您的观点需要

<label>
    @Html.RadioButtonFor(model => model.FeedBack, 1, new { id = "" })
    <span>Good</span>
</label>
<label>
    @Html.RadioButtonFor(model => model.FeedBack, 2, new { id = "" })
    <span>Better</span>
</label>
.... // ditto for Better (value=3) and Excellent(value=4)

旁注:@Html.Label("Good")创建一个与名为Good的表单控件关联的标签元素,该控件不存在,因此单击它不会选中/取消选中相关按钮。

我还建议您考虑使用enum作为您的值,而不是int。并且可能想要考虑“Excellect”如何被评为“最佳”