Я боролся с той же проблемой сегодня за флажок, который связывает с недействительным bool, и, поскольку я не могу изменить свою модель (не мой код), мне пришлось придумать лучший способ справиться с этим.Это немного грубая сила, но она должна работать в 99% случаев, с которыми я могу столкнуться.Вам, очевидно, придется выполнить некоторую ручную загрузку допустимых атрибутов для каждого типа ввода, но я думаю, что я получил все из них для флажка.
В моем шаблоне редактора Boolean.cshtml:
@model bool?
@{
var attribs = new Dictionary<string, object>();
var validAttribs = new string[] {"style", "class", "checked", "@class",
"classname","id", "required", "value", "disabled", "readonly",
"accesskey", "lang", "tabindex", "title", "onblur", "onfocus",
"onclick", "onchange", "ondblclick", "onmousedown", "onmousemove",
"onmouseout", "onmouseover", "onmouseup", "onselect"};
foreach (var item in ViewData)
{
if (item.Key.ToLower().IndexOf("data_") == 0 || item.Key.ToLower().IndexOf("aria_") == 0)
{
attribs.Add(item.Key.Replace('_', '-'), item.Value);
}
else
{
if (validAttribs.Contains(item.Key.ToLower()))
{
attribs.Add(item.Key, item.Value);
}
}
}
}
@Html.CheckBox("", Model.GetValueOrDefault(), attribs)