我想为EditorForHTML帮助程序设置默认值,但是其中仅显示帮助程序文本。为什么EditorFor不允许我设置其默认值?
class Person {
public int Id { get; set; }
public DateTime DateOfBirth { get; set; }
...
}
class PersonVM {
public Person { get; set; }
...
}
public ActionResult Edit(int id)
{
var vm = new PersonVM ();
vm.Person = db.Persons.Where(x => x.Id == id).FirstOrDefault();
...
return View(vm);
}
@model Project.Models.PersonVM
@Html.EditorFor(model => model.Person.DateOfBirth , new { htmlAttributes = new { @class = "form-control" } })
答案 0 :(得分:1)
通过为模型属性分配值来设置默认值。
在“控制器操作”中的任何一个:
public ActionResult Edit(int id) {
var vm = new PersonVM ();
vm.Person = db.Persons.Where(x => x.Id == id).FirstOrDefault();
if (vm.Person.DateOfBirth == default(DateTime)) {
vm.Person.DateOfBirth = new DateTime(1900, 01, 01); // default value
}
// ...
return View(vm);
}
或在ViewModel中(确保仅将有效的DateOfBirth从数据库映射到ViewModel)
public class PersonVM {
public PersonViewModel () {
DateOfBirth = new DateTime(1900, 01, 01); // default value
}
public int Id { get; set; }
public DateTime DateOfBirth { get; set; }
// ...
}