Вы можете попробовать указать имя шаблона в вашем помощнике:
@Html.EditorFor(car => car.IsFourWheel, "CheckBox")
И определить шаблон для отображения данных так, как вы хотите, либо в ~/Views/{YourControllerName}/EditorTemplates/CheckBox.cshtml
, либо в ~/Views/Shared/EditorTemplates/CheckBox.cshtml
.
Вы можете найти целую серию публикаций Брэда Уилсона о шаблонах MVC здесь:
Брэд Уилсон: Шаблоны ASP.NET MVC 2, часть 1: Введение
Это относится к MVC 2, но большинство концепций по-прежнему применимы и к MVC 3 (за исключением синтаксиса Razor).
Обновление:
На самом деле вы, вероятно,Мне не нужен собственный шаблон для этого.Попробуйте вместо этого использовать @Html.CheckBoxFor(car => car.IsFourWheel)
.
Обновление 2:
Удалите следующий шаблон в ~/Views/Shared/EditorTemplates
:
IsFourWheel.cshtml
@functions {
private bool IsChecked() {
if (ViewData.Model == null) return false;
return Convert.ToBoolean(ViewData.Model, System.Globalization.CultureInfo.InvariantCulture);
}
}
@Html.CheckBox("", IsChecked(), new { @class = "check-box" })
Затем, на ваш взгляд, назовите это так:
@Html.EditorFor(model => model.IsFourWheel, "IsFourWheel")
Я проверил это и связывание работает в сценариях GET и POST.