我创建了一个EF4.1代码优先模型(可能或可能不重要),我正在尝试为我的创建脚手架模板获取默认值。我的模型看起来像:
class Person { [DefaultValue (18)] public int Age { get; set; } }
然后我的创建视图看起来像:
<div class="editor-label"> @Html.LabelFor(model => model.Age) </div> <div class="editor-field"> @Html.EditorFor(model => model.Age) @Html.ValidationMessageFor(model => model.Age) </div>
我期待在运行时,EditorFor将预先填充“18”的文本框,但它没有这样的事情。我误解了DefaultValue属性是什么,还是还有什么我应该做的?
注意:我不想在EditorFor方法上使用新的{Value =“18”}覆盖,似乎打破了DRY。
解决方法
我不知道这是否会满足您的DRY需求,但这是我想的一个开始。
我会把这个模型改写成这样:
public class Person { private const int DEFAULT_AGE = 18; private int _age = DEFAULT_AGE; [DefaultValue(DEFAULT_AGE)] public int Age { get { return _age; } set { _age = value; } } }
保持视图原样,但在创建操作中执行此操作:
public ActionResult Create() { return View(new Person()); }
这样,输入文本框将使用默认的Age值创建,并且只有一个地方将指定默认值。