こんにちは、コントローラのエンティティをマッピングしてバインドすることを考えました。 モデル内のエンティティを正しくバインドしてモデルステートを使用できるようにするにはmvcが他のエンティティを参照してエンティティにバインドされているかどうかを確認する
私はMenuItemModelを使用して新しいMenuItemを作成しています。次のように私のMenuItemクラスが定義されている
public class MenuItemModel
{
public List<SelectListItem> Menus { get; set; }
public MenuItem MenuItem { get; set; }
}
:
public class MenuItem:Entity
{
public virtual int MenuItemId { get; set; }
public virtual Menu Menu { get; set; }
[Required]
public virtual string Name { get; set; }
public virtual int ItemOrder { get; set; }
public virtual string ExternalUrl { get; set; }
public virtual DateTime Created { get; set; }
public virtual bool Deleted { get; set; }
public virtual DateTime? DisplayUntil { get; set; }
public virtual User Author { get; set; }
} iがコントローラに私のエンティティを結合今
。
//
// POST: /Administrator/MenuItem/Create
[HttpPost]
public ActionResult Create(MenuItem menuItem)
{
if (ModelState.IsValid)
{
// do saving logic
menuItem.Created = DateTime.Now;
menuItem.Author = this._userProvider.GetCurrentUser();
menuItem.Menu = _menuRepository.Load(menuItem.Menu.MenuId);
}
//restore
MenuItemModel menuItemModel = new MenuItemModel();
menuItemModel.MenuItem = menuItem;
menuItemModel.Menus =
this._menuRepository.All.Select(x => new SelectListItem() { Text = x.Name, Value = x.MenuId.ToString() }).ToList();
return View(menuItemModel);
}
唯一の問題は、私がMenuItemだけでなくMenu、Userについても検証を取得していることです。
どのようにしてこの検証を設定し、MenuItemエンティティの検証のみを受け入れるか?私はにModelState項目に行くと、私は必要なだけのエンティティを見つけ、彼らが有効であるが、私はこれを行う良い方法があるだろうと信じているかどうかを確認することができます知っている
PS ...
任意のアイデアが高く評価され。唯一のMenuItemエンティティの検証を受け入れるように、この検証を設定しなければならどう
のthnx automapperための先端のために、それについて少し読んで、それを使用したことがありませんでした。 thnx 4答えも.... – cpoDesign