bri*_*wey 129 c# asp.net-mvc boolean model radio-button
有谁知道如何将是/否单选按钮绑定到ASP.NET MVC中强类型模型的布尔属性.
模型
public class MyClass
{
public bool Blah { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
Run Code Online (Sandbox Code Playgroud)
谢谢
解:
感谢Brian的指导,但这与他写的相反.如此 -
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
Run Code Online (Sandbox Code Playgroud)
Ben*_*ull 194
如果您使用的是MVC 3和Razor,您还可以使用以下内容:
@Html.RadioButtonFor(model => model.blah, true) Yes
@Html.RadioButtonFor(model => model.blah, false) No
Run Code Online (Sandbox Code Playgroud)
Bri*_*ins 74
第二个参数被选中,所以使用!当布尔值为false时选择无值.
<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
Run Code Online (Sandbox Code Playgroud)
Dan*_*mms 53
以下是一个更完整的示例,其中使用了fieldset
可访问性原因并将第一个按钮指定为默认值.如果没有a fieldset
,单选按钮的整体功能无法以编程方式确定.
模型
public class MyModel
{
public bool IsMarried { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图
<fieldset>
<legend>Married</legend>
@Html.RadioButtonFor(e => e.IsMarried, true, new { id = "married-true" })
@Html.Label("married-true", "Yes")
@Html.RadioButtonFor(e => e.IsMarried, false, new { id = "married-false" })
@Html.Label("married-false", "No")
</fieldset>
Run Code Online (Sandbox Code Playgroud)
您可以@checked
向匿名对象添加参数以将单选按钮设置为默认值:
new { id = "married-true", @checked = 'checked' }
Run Code Online (Sandbox Code Playgroud)
请注意,您可以通过更换绑定到一个字符串true
,并false
以字符串值.
ctc*_*ctc 26
稍微关闭Ben的回答,我添加了ID的属性,所以我可以使用标签.
<%: Html.Label("isBlahYes", "Yes")%><%= Html.RadioButtonFor(model => model.blah, true, new { @id = "isBlahYes" })%>
<%: Html.Label("isBlahNo", "No")%><%= Html.RadioButtonFor(model => model.blah, false, new { @id = "isBlahNo" })%>
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
Jef*_*ish 23
使用常规HTML在单选按钮周围添加标签标签也可以修复"labelfor"问题:
<label><%= Html.RadioButton("blah", !Model.blah) %> Yes</label>
<label><%= Html.RadioButton("blah", Model.blah) %> No</label>
Run Code Online (Sandbox Code Playgroud)
现在单击文本可选择相应的单选按钮.
或MVC 2.0:
<%= Html.RadioButtonFor(model => model.blah, true) %> Yes
<%= Html.RadioButtonFor(model => model.blah, false) %> No
Run Code Online (Sandbox Code Playgroud)
如果我可以把帽子扔进戒指,我认为有一种比现有答案更清洁的方式来重复使用单选按钮功能.
假设您的ViewModel中包含以下属性:
Public Class ViewModel
<Display(Name:="Do you like Cats?")>
Public Property LikesCats As Boolean
End Class
Run Code Online (Sandbox Code Playgroud)
您可以通过可重用的编辑器模板公开该属性:
首先,创建文件 Views/Shared/EditorTemplates/YesNoRadio.vbhtml
然后将以下代码添加到YesNoRadio.vbhtml:
@ModelType Boolean?
<fieldset>
<legend>
@Html.LabelFor(Function(model) model)
</legend>
<label>
@Html.RadioButtonFor(Function(model) model, True) Yes
</label>
<label>
@Html.RadioButtonFor(Function(model) model, False) No
</label>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
您可以通过在视图中手动指定模板名称来调用属性的编辑器:
@Html.EditorFor(Function(model) model.LikesCats, "YesNoRadio")
Run Code Online (Sandbox Code Playgroud)
优点: