Don*_*nny -1 asp.net-mvc asp.net-mvc-4
使用Controller时,建议您公开域实体,或者更好地创建模型.我以此为例:
[HttpPost]
public ActionResult Create(Order order)
{
        if (SaveObject<Order>(order, false))
        {
                return RedirectToAction("Index", new { id = order.CustomerNo });
        }
        else
        {
                ViewData.Model = order;
                return View();
        }
}
如果最好公开一个模型应该包含在哪个模型中?我是否需要创建支持属性,或者可能只需要为当前用例公开我需要的字段?我遇到了"模型注入"这个术语,有人可以解释使用它的含义是什么以及如何实现它?
使用Controller时,建议公开域实体
不,这是不可取的.
或者更好的是创建OrderViewModel.
是的,它更好.
如果是,我的视图模型中应包含哪些内容?
您希望由用户公开和修改的属性.
我遇到了"模型注入"这个术语,有人可以解释一下它的含义以及它是如何完成的?
想象一下以下领域模型:
public class User
{
    public bool IsAdministrator { get; set; }
    public string FirstName { get; set; }
}
并且您希望有一个允许用户更改其名字的控制器操作.所以你选择:
[HttpPost]
public ActionResult Create(User user)
{
    Save(user);
    ...
}
以及一个相应的视图,您可以在其中使用第一个名称的文本字段.用户现在可以非常轻松地模拟对控制器操作的请求,并将IsAdministrator属性设置(注入)为true.
这就是你应该使用视图模型的原因:
public class ChangeFirstNameUserModel
{
    public string FirstName { get; set; }
}
然后:
[HttpPost]
public ActionResult Create(ChangeFirstNameUserModel model)
{
    ...
}
| 归档时间: | 
 | 
| 查看次数: | 401 次 | 
| 最近记录: |