1

当我发布 FormCollection 并尝试获取单选按钮的值时,它始终采用最后一个单选按钮的值(无论选中哪个单选按钮)。为什么要这样做?我的临时解决方法是创建一个隐藏值并添加一个 onclick JS 方法。我尝试使用具有相同结果的纯 HTML 代码。

查看代码

@Html.RadioButton("Radio", "No", true, new { id = "Radio0"}) + " No");
@Html.RadioButton("Radio", "Yes", false, new { id = "Radio1"}) + " Yes");

生成的 HTML

<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");
}
4

1 回答 1

0

实际上无法复制该问题。它正确识别控制器上 PostBack 上选定的单选按钮。

您可能想要检查您的视图的代码(使用您给定的视图语法,它不应该首先呈现页面并且应该引发编译错误)

这是我正在测试的观点

@{
    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)

使用 RadioButtonList 的工作示例

RadioButton 上的讨论线程(虽然我找不到有关如何使用的示例RadioButton;根据您可以使用的线程RadioButton,如果可以在两个选项之间进行选择;否则您需要选择RadioButtonList

同样正如每个人都提到的那样,通过 aModel/ViewModel而不是发送FormCollection

于 2012-06-06T02:20:38.933 回答