我已经定义了一个具有一些属性的基类,例如:
public string CreatedByName { get; set; }
public DateTime CreatedOn { get; set; }
public string UpdatedByName { get; set; }
public DateTime UpdatedOn { get; set; }
如果我在我的控制器中创建一个继承自这个基类的模型对象,如下所示:
[HttpPost]
public ActionResult Create(Person person)
{
if (ModelState.IsValid)
{
person.Id = Guid.NewGuid();
//audit information
person.UpdatedByName = User.Identity.Name;
person.UpdatedOn = DateTime.Now;
person.CreatedByName = User.Identity.Name;
person.CreatedOn = DateTime.Now;
UoW.Persons.Add(person);
UoW.Commit();
return RedirectToAction("Index");
}
return View(person);
}
它永远不会像ModelState.IsValid
往常一样返回false
,因为在此阶段尚未设置审计属性。
有没有办法在某个常见的地方设置这种值(我试图编写帮助类,但如何获得User
?)并且在模型验证开始之前?
或者唯一的选择是使审计属性为 nullabe [不需要]?
编辑:-
尝试了@archil的建议:
哈哈哈............在Get
行动中做到这一点
public ActionResult Create()
{
var person=new Person();
person.UpdatedByName = User.Identity.Name;
person.UpdatedOn = DateTime.Now;
person.CreatedByName = User.Identity.Name;
person.CreatedOn = DateTime.Now;
return View(person);
仍然得到:
- CreatedOn 字段是必需的。
UpdatedOn 字段是必需的。