ASP.NET MVC EditorFor和DateTime默认值

时间:2018-07-11 14:25:19

标签: asp.net-mvc default-value editorfor

我想为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" } })

1 个答案:

答案 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; }
   // ...
}