窗体集合未获得单选按钮的正确值
本文关键字:单选按钮 集合 窗体 | 更新日期: 2023-09-27 18:36:24
当我发布 FormCollection 并尝试获取单选按钮的值时,它始终采用最后一个单选按钮的值(无论选中哪个)。为什么要这样做?我的临时解决方法是创建一个隐藏值并添加一个 onclick JS 方法。我尝试使用具有相同结果的纯HTML代码。
用于查看的代码
@Html.RadioButton("Radio", "No", true, new { id = "Radio0"}) + " No");
@Html.RadioButton("Radio", "Yes", false, new { id = "Radio1"}) + " Yes");
生成的网页
<input checked="checked" id="Radio0" name="Radio" type="radio" value="No"> No
<input id="Radio1" name="Radio" type="radio" value="Yes"> Yes
控制器代码
[HttpPost, ValidateInput(false)]
public ActionResult MyPostBack(FormCollection form)
{
string radio = form["Radio"]; //************** this is always "Yes"
return View("MyView");
}
实际上无法复制该问题。它正确识别控制器上回发上的选定单选按钮。
您可能需要检查视图的代码(使用您给定的视图语法,它不应该首先呈现页面,并且应该抛出编译错误)
这是我正在测试的观点
@{
ViewBag.Title = "MyView";
}
<h2>MyPostBack</h2>
@using (Html.BeginForm())
{
@Html.RadioButton("Radio", "No", true, new { id = "Radio0"}) @:No
@Html.RadioButton("Radio", "Yes", false, new { id = "Radio1"}) @:Yes
<input type ="submit" runat="server" id="btnSubmit" />
}
编辑
根据您的评论,由于您使用的是 DevExpress
,首先浏览提供的文档。它应该为你指明正确的方向。做了一些谷歌搜索,发现除了RadioButton
扩展名之外还有一个RadioButtonList
扩展名。这里有几个链接可以帮助你。
DevExpress 文档 (RadiButtonList)
使用单选按钮列表的工作示例
RadioButton上的一个讨论线程(虽然我找不到如何使用RadioButton
的例子;根据线程,你可以使用RadioButton
,如果是可以选择两个选项;否则你需要选择RadioButtonList
)
此外,正如每个人都提到的,投注者通过Model/ViewModel
而不是发送FormCollection