我有这个代码
@Html.RadioButtonFor(model => model.LivStato, 1, Model.LivStato == 1)
@Html.RadioButtonFor(model => model.LivStato, -1, Convert.ToString(Model.LivStato) == string.Empty)
Run Code Online (Sandbox Code Playgroud)
如果Model.LivStato == 1为true,则选中单选按钮.
我不明白为什么如果Convert.ToString(Model.LivStato) == string.Empty是真的,没有选中单选按钮
我也试试这个
@Html.RadioButtonFor(model => model.LivStato, -1, !Model.LivStato.HasValue)
Run Code Online (Sandbox Code Playgroud)
但是不行.
在模型中:
public short? LivStato { get; set; }
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
更新的答案
哎呀,如果空单选按钮不是列表中的第一个,我的原始答案不起作用.正如@ sohtimsso1970所指出的那样,单选按钮会有一个checked属性,通常会导致它被选中,即使该值不为null,除非在DOM中稍后有另一个已检查的单选按钮,当然如果true/false-bound单选按钮低于null 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>
Run Code Online (Sandbox Code Playgroud)
无论null上绑定单选按钮在DOM上的位置如何,这都将起作用,并且还会呈现正确的HTML.
原始答案:
使用以下单选按钮将绑定到null:
<%: Html.RadioButtonFor(model => model.LivStato, "", new { @checked = !Model.LiveStato.HasValue }) %>
Run Code Online (Sandbox Code Playgroud)
该checked属性是必需的,因此当ViewModel属性为null时,将正确检查单选按钮.
| 归档时间: |
|
| 查看次数: |
5646 次 |
| 最近记录: |