次のようないくつかのプロパティを使用して基本クラスを定義しました。
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の提案を試しました:
HAHAHAH.........これを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フィールドは必須です。
RefreshedOnフィールドは必須です。