应该在 asp.net mvc 中创建/操作视图模型的位置

本文关键字:操作 视图 模型 位置 创建 asp net mvc | 更新日期: 2023-09-27 17:56:20

在 ASP.NET MVC中,应该在哪里使用视图模型?

这应该严格在控制器中完成吗?或者可以说,从存储库方法返回视图模型?

应该在 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 层一无所知 - 这样您就可以尽可能获得最佳的重用和解耦。