Asp.net mvc 3 MVC3单选按钮的行为与应有的不同

Asp.net mvc 3 MVC3单选按钮的行为与应有的不同,asp.net-mvc-3,Asp.net Mvc 3,我有个问题快让我发疯了。。我已将问题缩小到以下测试用例: 型号: public class TestModel { public bool TestBool { get; set; } } 索引视图: @{ ViewBag.Title = "Index"; } <h2>Index</h2> @Html.Action("Test") @{ ViewBag.Title=“Index”; } 指数 @动作(“测试”) 测试视图: @model IEnumerabl

我有个问题快让我发疯了。。我已将问题缩小到以下测试用例:

型号:

public class TestModel
{
    public bool TestBool { get; set; }
}
索引视图:

@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.Action("Test")
@{
ViewBag.Title=“Index”;
}
指数
@动作(“测试”)
测试视图:

@model IEnumerable<Test_GUI.Models.TestModel>
@using (Html.BeginForm()) {
<table>
     @Html.EditorForModel()
</table>
<input type="submit" value="OK"/>
}
@model IEnumerable
@使用(Html.BeginForm()){
@Html.EditorForModel()
}
编辑器模板

<tr>
<td>
    Yes
    @Html.RadioButtonFor(m => m.TestBool, Model.TestBool)
</td>
<td>
    No
    @Html.RadioButtonFor(m => m.TestBool, !Model.TestBool)
</td>

对
@RadioButton(m=>m.TestBool,Model.TestBool)
不
@RadioButton(m=>m.TestBool,!Model.TestBool)

在TestController中,我创建了两个值为false的TestModel实例,并将它们传递给视图。但是单选按钮显示为选中状态,如果我发布表单,它们也会返回为true。。 我尝试了许多其他的方法来显示单选按钮,但似乎没有任何效果。这似乎是正确的做法。 我必须能够使用布尔值的当前值,因此我不能在视图中使用固定的true或false值。如果我使用固定的真/假,那么在发布表单后,我会在表单和控制器中获得正确的值

试着这样做:

<td>
    Yes
    @Html.RadioButtonFor(m => m.TestBool, true)
</td>
<td>
    No
    @Html.RadioButtonFor(m => m.TestBool, false)
</td>

对
@RadioButton(m=>m.TestBool,true)
不
@RadioButton(m=>m.TestBool,false)
试着这样做:

<td>
    Yes
    @Html.RadioButtonFor(m => m.TestBool, true)
</td>
<td>
    No
    @Html.RadioButtonFor(m => m.TestBool, false)
</td>

对
@RadioButton(m=>m.TestBool,true)
不
@RadioButton(m=>m.TestBool,false)

谢谢,但正如我在文章的最后一部分所说,这确实有效,但我需要能够使用当前值。(在真实场景中,我显示了一个可以编辑和保存的datagrid)@Hanno,当前值是多少?只要在控制器操作中设置TestBool属性,就会自动检查正确的单选按钮。您能解释一下如何实现这一点吗?因为我必须传递一些值作为第二个参数,但我如何以一种有效的方式传递当前值?@Hanno,我不明白你在问什么。如果您在我的回答中使用代码,那么您可以拥有一个具有以下签名的控制器操作:
[HttpPost]public ActionResult Index(IEnumerable model){…}
,您将能够在其中获取所选值。在检查页面源代码后,事情看起来更为奇怪。。值属性设置正确,但选中的属性错误。。例如,我将一个项目设置为false,一个项目设置为true,这两个项目都显示为选中,但它们的值设置正确。如果我更改radiobutton值,页面将发布原始值,而不是“选中”值。谢谢,但正如我在文章最后一部分中所说的,这确实有效,但我需要能够使用当前值。(在真实场景中,我显示了一个可以编辑和保存的datagrid)@Hanno,当前值是多少?只要在控制器操作中设置TestBool属性,就会自动检查正确的单选按钮。您能解释一下如何实现这一点吗?因为我必须传递一些值作为第二个参数,但我如何以一种有效的方式传递当前值?@Hanno,我不明白你在问什么。如果您在我的回答中使用代码,那么您可以拥有一个具有以下签名的控制器操作:
[HttpPost]public ActionResult Index(IEnumerable model){…}
,您将能够在其中获取所选值。在检查页面源代码后,事情看起来更为奇怪。。值属性设置正确,但选中的属性错误。。例如,我将一个项目设置为false,一个项目设置为true,这两个项目都显示为选中,但它们的值设置正确。如果我更改radiobutton值,页面将发布原始值,而不是“选中”值。。