Bry*_*her 26 entity-framework-4 data-annotations asp.net-mvc-3
我创建了一个EF4.1代码优先模型(可能重要也可能不重要),我正在尝试获取我的创建脚手架模板的默认值.我的模型看起来像:
class Person {
[DefaultValue (18)]
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我的Create视图看起来像:
<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>
Run Code Online (Sandbox Code Playgroud)
我希望在运行时,EditorFor会用"18"预先填充文本框,但它没有这样的东西.我误解了DefaultValue属性的用途,还是我应该做的其他事情?
注意:我不想new { Value = "18" }
在EditorFor方法上使用覆盖,它似乎打破了DRY.
Ken*_*ina 33
我不知道这是否能满足您的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; }
}
}
Run Code Online (Sandbox Code Playgroud)
保持视图不变,但在create操作中执行以下操作:
public ActionResult Create() {
return View(new Person());
}
Run Code Online (Sandbox Code Playgroud)
这样,输入文本框将使用默认的Age值创建,并且只有一个位置将指定默认值.
class Person {
public Person() {
Age = 18;
}
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每次执行新的Person时,将使用18作为年龄进行初始化,即使模型Binder创建了新对象.
归档时间: |
|
查看次数: |
54323 次 |
最近记录: |