我有MVC类,其中一个变量已声明为:
[UIHint("YesNoRadio")]
[Required(ErrorMessage = "test")]
public bool? Emergency { get; set; }
这会将HTML创建为
<div class="radio-inline"><label>
<input data-val="true" data-val-required="Test" id="Emergency" name="Emergency" type="radio" value="true">Yes</label>
</div>
<div class="radio-inline"><label>
<input id="Emergency" name="Emergency" type="radio" value="false">No</label>
</div>
我想要的是添加新属性,让我们说 div-effect =&#34; emergencyExplain&#34; 和单选按钮来
<label><input id="Emergency" name="Emergency" type="radio" value="false" div-effect = "emergencyExplain">No</label>
YesNoRadio.cshtml如下:
@model bool?
<div class="radio-inline">
<label>
@if (Model.HasValue && Model.Value)
{
@Html.RadioButtonFor(x => x, "true", new { @checked = "checked" });
}
else
{
@Html.RadioButtonFor(x => x, "true");
}
Yes
</label>
</div>
<div class="radio-inline">
<label>
@if (Model.HasValue && !Model.Value)
{
@Html.RadioButtonFor(x => x, "false", new { @checked = "checked" });
}
else
{
@Html.RadioButtonFor(x => x, "false");
}
No
</label>
</div>
并将其称为:
@Html.EditorFor(m => m.Emergency, new { htmlAttributes = new { @class = "form-control" } })
MVC表单创建的新手,所以任何指向正确方向的帮助都将受到赞赏。
由于
答案 0 :(得分:1)
使用[UIHint]
属性只是指示EditorFor()
方法使用该模板。它不会将任何其他数据传递给modell属性以外的模板。您需要使用EditorFor()
additionalViewData
传递模板名称和表示data-effect
的对象。
您没有显示包含要添加到public string Effect { get; set; }
属性的值的模型属性,但假设其
[UIHint]
并在将模型传递给视图之前在GET方法中设置其值,然后从Emergency
属性中删除@Html.EditorFor(m => m.Emergency, "YesNoRadio", new { effect = Model.Effect })
属性并将主视图修改为
YesNoRadio.cshtml
然后将<div class="radio-inline">
<label>
@Html.RadioButtonFor(x => x, true, new { id = "", div_effect = ViewData["effect"] })
<span>Yes</span>
</label>
<label>
@Html.RadioButtonFor(x => x, false, new { id = "", div_effect = ViewData["effect"] })
<span>No</span>
</label>
</div>
模板更改为
<input data-val="true" data-val-required="Test" div-effect="emergencyExplain" name="Emergency" type="radio" value="True">
将生成
new { htmlAttributes = new { @class = "form-control" } }
有关当前视图代码的一些注意事项。
EditorTemplate
使用自定义RadioButtonFor()
时不会做任何事情 - 仅限自定义checked
适用于使用内置模板(如何知道哪些
要将该类应用于的元素。如果要应用类名
单击单选按钮,在RadiobuttonFor()
方法中添加
模板null
属性。
该属性由基于true
方法的false
方法设置
属性的值(如果是new { id = "" }
,则不会选择任何按钮,
如果是id
或{{1}},那么相应的按钮就是
选择