在一个视图中,我有两个<input type="radio">
,他们组合成一个广播组。
我想用一个Model字段绑定它们,如果value为true,它应该绑定第一个单选按钮,如果为false,它应该绑定另一个。
请指导如何实现。我尝试了下面的代码,但它总是检查第二个无线电,无论模型有什么价值。
<div class="radiobuttons">
<input type="radio" name="LenderType" checked="@Model.Filter_Value" id="rbtnAllLenders" class="cb">
<input type="radio" id="rbtnMajorLendersOnly" checked="!@Model.Filter_Value" name="LenderType" class="cb">
</div>
答案 0 :(得分:1)
输入为无线电的输入需要设置值。如果选中了收音机,那么该值就是为模型中的名称发送的值。
查看模型
public class SomeViewModel
{
public int MyRadioValue { get; set; }
}
输入元素
<input type="radio" value=1 name="MyRadioValue" />
<input type="radio" value=2 name="MyRadioValue" />
<input type="radio" value=3 name="MyRadioValue" />
答案 1 :(得分:0)
您的手动代码是将selected
属性添加到两个单选按钮。以下所有内容均相同:
<input type="radio" ... checked />
<input type="radio" ... checked="selected" />
<input type="radio" ... checked="true" />
<input type="radio" ... checked="false" />
请注意,最后2个是checked
属性的无效值,但仍然会检查单选按钮。由于您有一个组名,并且只能在视觉上检查一个按钮,因此选择了最后一个。 Refer W3C specifications
使用html帮助器绑定到您的模型。如果模型包含属性string LenderType
,那么
@Html.RadioButtonFor(m => m.LenderType, "All lenders", new { id = "All"})<label for="All">All lenders</label>
@Html.RadioButtonFor(m => m.LenderType, "Major lenders", new { id = "Major"})<label for="Major">Major lenders</label>
如果LenderType
的值是&#34;所有贷方&#34;将选择第一个选项。如果值为&#34;主要贷方&#34;,则将选择第二个选项
答案 2 :(得分:0)
创建Html Helper ....
public static HtmlString RadioButtonListFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectListItems, RadioButtonListLayout layout)
{
var sb = new StringBuilder();
foreach (var item in selectListItems)
{
var itemId = string.Format(
CultureInfo.InvariantCulture,
"{0}_{1}",
helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression)),
item.Value);
var itemHtml = string.Format(
CultureInfo.InvariantCulture,
"{0} <label for=\"{1}\">{2}</label>",
helper.RadioButtonFor(expression, item.Value, new { id = itemId }),
itemId,
item.Text);
if (layout == RadioButtonListLayout.Horizontal)
{
sb.Append("<span class=\"radiobuttonlist-horizontal\">");
sb.Append(itemHtml);
sb.AppendLine("</span>");
}
else
{
sb.Append("<div class=\"radiobuttonlist-vertical\">");
sb.Append(itemHtml);
sb.AppendLine("</div>");
}
}
return new HtmlString(sb.ToString());
}
使用它......
@Html.RadioButtonListFor(x=>x.Id,Model.ListItem,RadioButtonListLayout.Horizontal)