Asp.net mvc 2 如何使局部视图在不同的ViewModel(asp.net mvc 2)之间可重用?

Asp.net mvc 2 如何使局部视图在不同的ViewModel(asp.net mvc 2)之间可重用?,asp.net-mvc-2,partial-views,Asp.net Mvc 2,Partial Views,我已经创建了一个局部视图,我希望能够在我的网站的不同页面上重复使用 目前,我为每个网页创建了一个ViewModel,它整理了我想要显示的所有信息,然后将其发送到包含3个独立部分视图的视图。以下是一个简化的示例: public ActionResult Index() { MyViewModel m = new MyViewModel(); MyViewModel modelData = m.GetModelData(); return Vi

我已经创建了一个局部视图,我希望能够在我的网站的不同页面上重复使用

目前,我为每个网页创建了一个ViewModel,它整理了我想要显示的所有信息,然后将其发送到包含3个独立部分视图的视图。以下是一个简化的示例:

public ActionResult Index()
    {
        MyViewModel m = new MyViewModel();
        MyViewModel modelData = m.GetModelData();
        return View(modelData);
    }

public MyViewModel GetModelData()
    {
        ModelData modelData = new ModelData();
        modelData.employees = GetEmployees();
        modelData.products = GetProducts();
        modelData.prices = GetPrices();
        return modelData
    }
在我的网页中,每个局部视图都继承自同一视图模型,该模型允许我强键入每个局部视图:

Inherits="System.Web.Mvc.ViewUserControl<DomainModel.Entities.MyViewModel>
Inherits=“System.Web.Mvc.ViewUserControl
我的问题是,我想在其他网页中使用我的一个局部视图('Prices.ascx'),因为它非常通用。但是,因为它继承自
DomainModel.Entities.MyViewModel
,如果我试图传递另一个视图模型,例如CheckOutViewModel,我会出错

我不知道如何才能避开这个问题?如何在asp.net mvc 2中使用部分视图,以便在任何网页上重复使用并接受任何视图模型


在这个过程中的某个地方,我觉得我错过了一些明显的东西…

创建一个特定于部分价格的视图模型。将该视图模型包含在调用页面使用的页面级视图模型中。然后在调用RenderPartial时,将模型的适当部分传递给部分价格

public MyViewModel GetModelData()
    {
        ModelData modelData = new ModelData();
        modelData.employees = GetEmployees();
        modelData.products = GetProducts();
        modelData.MyPricesViewModel = GetPrices();   <-- this should be a view model
        return modelData
    }
public MyViewModel GetModelData()
{
ModelData ModelData=新ModelData();
modelData.employees=GetEmployees();
modelData.products=GetProducts();

modelData.MyPricesViewModel=GetPrices();谢谢。我必须仔细考虑一下,但我想我现在理解了您建议的方法。让我试试。。。
Inherits="System.Web.Mvc.ViewUserControl<DomainModel.Entities.MyPricesViewModel>
<% Html.RenderPartial("Prices", Model.MyPricesViewModel); %>