У меня есть следующая модель:
public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
}
Я хочу, чтобы пол по умолчанию был женский, поэтому я установил это в действии:
public ActionResult Create()
{
var model = new Person { Gender = "F" }; // default is female
return View(model);
}
Наконец, представление отображает все так:
@model Person
@using (Html.BeginForm())
{
@Html.EditorForModel()
<p><input type="submit" value="Create" /></p>
}
Это все работает как положено. Теперь предположим, что вместо простого текстового поля я хочу отобразить пол в виде более интуитивной пары переключателей. Поэтому я делаю следующий шаблон и сохраняю его в Shared / EditorTemplates / Gender.cshtml:
@model string
@Html.RadioButtonFor(model => model, "F") Female
@Html.RadioButtonFor(model => model, "M") Male
Наконец я украшаю Пол с [UIHint("Gender")]
.
Пол теперь правильно отображается с помощью переключателей, что здорово, НО ...
Проблема
Самка больше не выбирается предварительно выбранной в качестве значения по умолчанию, и вместо этого я получаю две пустые радиокнопки. Я что-то упустил?
Интересно, что если я переместу RadioButtonFor
из шаблона в представление (изменив model => model
на model => model.Gender
), то все будет работать как положено. Я знаю, что это жизнеспособный обходной путь, но эти шаблонные помощники настолько удивительны и вызывают привыкание, что я предпочел бы исчерпать все возможности, прежде чем отпустить их.