应该在 asp.net mvc 中创建/操作视图模型的位置
本文关键字:操作 视图 模型 位置 创建 asp net mvc | 更新日期: 2023-09-27 17:56:20
在 ASP.NET MVC中,应该在哪里使用视图模型?
这应该严格在控制器中完成吗?或者可以说,从存储库方法返回视图模型?
在我看来
,视图模型特定于将使用它们的任何应用程序,而存储库将返回所有应用程序通用的模型。因此,我认为视图模型应该在网站中创建,从存储库返回的通用模型,而不是将存储库与了解视图如何布局联系起来。
严格来说,您的存储库应该返回域对象
存储库:"使用类似集合的接口在域和数据映射层之间进行调解,以访问域对象。
福勒(波亚)
视图模型应在控制器中实例化并传递给强类型视图。通常,视图模型将包含呈现视图所需的多种模型类型。下面是一个简单示例:
假设您有两个模型对象"订单"和"客户"
您希望在页面顶部显示"客户详细信息",并在该客户的"索引"视图中显示"订单网格"。
public class CustomerModel
{
//properties
}
public class OrderModel
{
//properties
}
public class CustomerVM
{
public CustomerModel customer { get; set; }
public IEnumerable<OrderModel> orders { get; set; }
}
//and in your controller
public class CustomerController : Controller
{
public ActionResult Index(int id)
{
CustomerVM vm = new CustomerVM();
vm.customer = CustomerRepository.GetCustomer(id);
vm.orders = OrdersRepository.GetOrdersForCustomer(id);
return View(vm);
}
}
存储库应该介于您的域和 UI 之间 - 存储库应该对您的 UI 层一无所知 - 这样您就可以尽可能获得最佳的重用和解耦。