gpt4 book ai didi

asp.net-mvc-2 - 如何使部分 View 可在不同 View 模型(asp.net mvc 2)之间重复使用?

转载 作者:行者123 更新时间:2023-12-02 17:43:34 25 4
gpt4 key购买 nike

我创建了一个部分 View ,希望能够在网站的不同页面上重复使用。

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

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
}

在我的网页中,每个部分 View 都继承自相同的 View 模型,这允许我强类型每个部分 View :

Inherits="System.Web.Mvc.ViewUserControl<DomainModel.Entities.MyViewModel>

我的问题是,我想在其他网页中使用我的部分 View 之一(“Prices.ascx”),因为它非常通用。但是,因为它继承自 DomainModel.Entities.MyViewModel 如果我尝试传递另一个 View 模型,例如,我会收到错误。检查ViewModel。

我不知道如何解决这个问题?如何在 asp.net mvc 2 中使用部分 View ,以便可以在任何网页上重复使用它并接受任何 View 模型?

一路走来,我觉得我错过了一些明显的东西......

最佳答案

创建特定于“价格”部分的 View 模型。将该 View 模型包含在调用页面使用的页面级 View 模型中。然后在调用 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
}

编辑您的部分 View ,使其仅继承特定于其需求的模型。

Inherits="System.Web.Mvc.ViewUserControl<DomainModel.Entities.MyPricesViewModel>

在您的 View 页面中,您可以调用:

<% Html.RenderPartial("Prices", Model.MyPricesViewModel); %>

关于asp.net-mvc-2 - 如何使部分 View 可在不同 View 模型(asp.net mvc 2)之间重复使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com