我在使用 RadioButtonFor 帮助程序时遇到问题。当传入的值为 true 时,它不会在任一单选按钮中显示“检查”。当值为 false 时,它工作得很好。
我从我正在处理的项目中复制了这段代码并创建了一个示例应用程序,并且我能够复制该问题。如果我将值硬编码为 true 或 false,它似乎可以工作,但是当我使用“!string.IsNullOrEmpty(allgroups)”时,它不起作用。
从视图来看:
<div>
@Html.RadioButtonFor(m => m.AllGroups, true) All Groups
@Html.RadioButtonFor(m => m.AllGroups, false) Current Groups
</div>
从视图模型:
public bool AllGroups { get; set; }
从控制器:
public ActionResult Index(string allgroups)
{
var model = new ProgramGroupIndexViewModel
{
AllGroups = !string.IsNullOrEmpty(allgroups)
};
return View(model);
}
在IE中查看源代码:
<div>
<input id="AllGroups" name="AllGroups" type="radio" value="True" /> All Groups
<input id="AllGroups" name="AllGroups" type="radio" value="False" /> Current Groups
</div>
当 AllGroups 的值为 false 时,从查看源代码(注意它有效):
<div>
<input id="AllGroups" name="AllGroups" type="radio" value="True" /> All Groups
<input checked="checked" id="AllGroups" name="AllGroups" type="radio" value="False" /> Current Groups
</div>
模型绑定变得混乱,因为您将操作参数命名为与模型属性相同。更改您的姓名Index
动作参数,它应该可以工作。
public ActionResult Index(string showAllGroups)
{
var model = new ProgramGroup
{
AllGroups = !string.IsNullOrEmpty(showAllGroups);
};
return View(model);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)