【发布时间】:2011-10-28 12:34:12
【问题描述】:
您好,刚刚考虑在控制器中映射和绑定我的实体。 我应该如何正确绑定模型中的实体,以便我可以使用模型状态
我正在使用 MenuItemModel 创建新的 MenuItem。
public class MenuItemModel
{
public List<SelectListItem> Menus { get; set; }
public MenuItem MenuItem { get; set; }
}
我的 MenuItem 类定义如下:
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; }
}
现在当我在控制器中绑定我的实体时。
//
// 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 实体的验证?
PS 我知道我可以进入模型状态项并仅找到我需要的实体并检查它们是否有效,但我相信会有更好的方法来做到这一点......
任何想法都值得赞赏。
【问题讨论】:
标签: asp.net-mvc-2 entity model-binding