Html Net MVC:我可以使用FormCollection来确定选择了哪个单选按钮吗?

Html Net MVC:我可以使用FormCollection来确定选择了哪个单选按钮吗?,html,asp.net-mvc,Html,Asp.net Mvc,我正在使用FormCollection获取ASP.NETMVC视图上的客户端输入。我使用了一个复选框,我只是检查FormCollection的AllKeys列表是否包含我正在检查的复选框的名称。我现在需要切换到单选按钮,但由于输入需要具有相同的名称(这在我看来有点傻),我无法确定选择了哪个单选按钮 或者我可以吗?如果有三个单选按钮都具有相同的名称,那么当您在表单集合中获取值时,该键的值将是所选单选按钮的值。这就是他们的工作方式。它们使用与逻辑分组相同的名称,因此选择一个,将取消选择上一个。因此,

我正在使用FormCollection获取ASP.NETMVC视图上的客户端输入。我使用了一个复选框,我只是检查FormCollection的AllKeys列表是否包含我正在检查的复选框的名称。我现在需要切换到单选按钮,但由于输入需要具有相同的名称(这在我看来有点傻),我无法确定选择了哪个单选按钮


或者我可以吗?

如果有三个单选按钮都具有相同的名称,那么当您在表单集合中获取值时,该键的值将是所选单选按钮的值。这就是他们的工作方式。它们使用与逻辑分组相同的名称,因此选择一个,将取消选择上一个。因此,如果按名称标识组,则可以假定该值是所选单选按钮的值


Andrew

我使用jQuery来处理这个问题,并设置了一个隐藏字段

所以我有这样的东西

var RadioButtonValue = $('input:radio[class=RadButtonClassGroupName]:checked').val();
然后,我可以将隐藏字段值设置为RadioButtonValue


我知道这个解决方案对您来说有点糟糕,但我在一篇jQuery ajax回帖中这样使用了它,但如果所有其他方法都失败了,也可以应用于您的问题。

假设您有3个单选按钮,如下所示:

 <% = Html.RadioButton("radio", "1")%>
 <% = Html.RadioButton("radio", "2")%>
 <% = Html.RadioButton("radio", "3")%>
var radio = Convert.ToInt16(Request.Form["radio"]);
formCollection将只包含一个具有相应值的键

我鼓励您通过直接参数绑定使用模型绑定:

public ActionResult Action(int radio)

或者使用ViewModel。

如果我有以下选项:选中第三个单选按钮,FormCollection只有一个键,字符串“test”。“C值”在哪里都找不到。我遗漏了什么吗?没错。在三个单选按钮中,您只能期望一个键作为名称,以及所选键的值。开始时的值C是值,而不是键。签入values集合,您将在其中看到它。不是密钥收集啊,我不知道我可以通过FormCollection对象访问输入值。GetValue()方法正是我所需要的。谢谢默认模型绑定就是为此而设计的。只需使用ajax提交表单并截获表单提交事件,停止它,然后执行您需要执行的操作。我发现这是一个更优雅的解决方案。由于您仍在保留传递的核心html表单数据,并且正在启用ajax,postsI应该提到我们使用的是WebForms,而不是MVC框架。