【发布时间】:2012-01-11 13:11:35
【问题描述】:
我有以下型号:
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")]装饰了Gender。
现在可以使用单选按钮正确呈现性别,这很棒,但是...
问题
Female 不再预选为默认值,而是将两个单选按钮变为空白。我错过了什么吗?
有趣的是,如果我将 RadioButtonFor 从模板移动到视图(将 model => model 更改为 model => model.Gender),那么一切都会按预期工作。我知道这是一种可行的解决方法,但是这些模板化的帮助程序是如此令人惊奇、令人上瘾的便利,我宁愿在放手之前用尽所有可能性。
【问题讨论】: