我有这个代码
@Html.RadioButtonFor(model => model.LivStato, 1, Model.LivStato == 1)
@Html.RadioButtonFor(model => model.LivStato, -1, Convert.ToString(Model.LivStato) == string.Empty)如果Model.LivStato == 1为true,则选中该单选按钮。
我不明白为什么如果Convert.ToString(Model.LivStato) == string.Empty为真,单选按钮就不会被选中
我也试试这个
@Html.RadioButtonFor(model => model.LivStato, -1, !Model.LivStato.HasValue)但这不管用。
在模型中:
public short? LivStato { get; set; }有谁可以帮我?
发布于 2012-09-04 21:16:52
看看HtmlHelper.RadioButtonFor重载:没有人使用第三个布尔型参数作为"check button if value == something“。第三个参数(如果存在)仅用于htmlAttributes。
http://msdn.microsoft.com/en-us/library/ee830415%28v=vs.108%29
如果您的firstLine可以工作,那是因为您使用了1作为第二个参数(Model.LivStato == 1什么也不做)。
您可以尝试(未测试)
@Html.RadioButtonFor(model => model.LivStato, 1)
@Html.RadioButtonFor(model => model.LivStato, -1)并在您的控制器中将-1更改为null。
发布于 2014-02-27 10:36:07
已更新答案
哦,如果空单选按钮不在列表的第一位,我最初的答案就不起作用。正如@sohtimsso1970所指出的,单选按钮将具有checked属性,该属性通常会使单选按钮即使在值不为null时也被选中,除非在DOM中稍后存在另一个选中的单选按钮,当然,如果真/假绑定的单选按钮低于null绑定的单选按钮,则会有该单选按钮。
考虑到这一点,这里有一个更好的解决方案:
@{
var dict = new Dictionary<string, object>();
if (!Model.LivStato.HasValue) { dict.Add("checked", "checked"); }
}
<label>@Html.RadioButtonFor(model => model.LivStato, "", dict) Null</label>
<label>@Html.RadioButtonFor(model => model.LivStato, 1) +1</label>
<label>@Html.RadioButtonFor(model => model.LivStato, -1) -1</label>无论绑定为null的单选按钮位于DOM上的什么位置,都可以执行此操作,并且还可以呈现正确的HTML。
原始答案:
使用下面的单选按钮将绑定到null
<%: Html.RadioButtonFor(model => model.LivStato, "", new { @checked = !Model.LiveStato.HasValue }) %>需要checked属性,以便在ViewModel属性为null时正确选中该单选按钮。
https://stackoverflow.com/questions/12263926
复制相似问题