Nullableブール値には3ステートがあります。 3つのラジオボタンを使用すると、ユーザーはドロップダウンリストと同じように2回クリックする必要がありません。また、チェックボックスをfalseに設定すると、チェックボックスのみを取り消すことができます。
結果を表示するためのわかりやすい方法は、チェックボックスまたは何も表示されません。
MVC3の場合、Views | Shared | DisplayTemplates | Boolean.cshtmlファイルに次のC#Razorコードを入力して、trueの場合はチェックボックスを、falseの場合はチェックボックスをオフにし、nullの場合は何も表示しません(
)。通常、Nullは、ユーザーが未確認であることを示しているか、あなたが求めている質問が私的であり、あなたのビジネスのどれでもないと考えていることを意味します。自動的に3-のラジオボタンを表示するBoolean.cshtmlファイル| MVC3については
@model bool?
@{
//ForDisplay Template - similar template for EditFor
Dictionary<string, object> cbAttr = new Dictionary<string, object>();
cbAttr.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId(""));
if (Model.HasValue && Model.Value)
{
cbAttr.Add("checked", "checked");
@Html.CheckBox(ViewData.TemplateInfo.GetFullHtmlFieldId(""), cbAttr);
}
else if (Model.HasValue && !Model.Value)
{
@Html.CheckBox(ViewData.TemplateInfo.GetFullHtmlFieldId(""), cbAttr);
}
else
{
@Html.DisplayText(" ");
}
}
ビューに次のC#レイザーコードを置く|共有| EditorTemplates。
@model bool?
<div data-ui="buttonset">
@{
Dictionary<string, object> yesAttrs = new Dictionary<string, object>();
Dictionary<string, object> noAttrs = new Dictionary<string, object>();
Dictionary<string, object> nullAttrs = new Dictionary<string, object>();
yesAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes");
noAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No");
nullAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA");
if (Model.HasValue && Model.Value)
{
yesAttrs.Add("checked", "checked");
}
else if (Model.HasValue && !Model.Value)
{
noAttrs.Add("checked", "checked");
}
else
{
nullAttrs.Add("checked", "checked");
}
}
@Html.RadioButtonFor(x => x, "true", yesAttrs)
<label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))Yes">Yes</label>
@Html.RadioButtonFor(x => x, "false", noAttrs)
<label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))No">No</label>
@Html.RadioButtonFor(x => x, "null", nullAttrs)
<label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))NA">TBD</label>
</div>