【发布时间】:2015-02-25 18:05:18
【问题描述】:
假设我有一个产品列表。我想在供应商页面上显示某个供应商的产品列表。我还想在产品页面上显示完整的产品列表。为此,我使用局部视图
@Html.Partial("_ProductList", Model.Products)
局部视图只是一个包含一堆列的基本表格。
其中一列显示供应商名称。在产品页面上这很有用,但要显示用户何时已经在供应商的页面上,显示每个产品的供应商名称是没有用的。
我想知道的是:将这种布局配置传递给局部视图的推荐方法是什么?
是用ViewData参数吗?
@Html.Partial("_CallList", Model.Calls, new ViewDataDictionary{{"HideCompany", true}})
执行此操作时,我发现我必须在局部视图中进行大量转换,这确实弄乱了我的模板。
@if (!(bool)ViewData["HideCompany"])
{
<td>@Html.DisplayFor(modelItem => item.Name)</td>
}
另外,如果我想将我的分页器放在部分视图中,如何在不指定 actionName 的情况下生成 url?
@Html.PagedListPager(Model, page => Url.Action("Index", new { page = page }));
动作名称不会相同,具体取决于嵌入部分视图的视图,因此我必须将其传递给 ViewData 中的部分视图。
@Html.Partial("_CallList", Model.Calls, new ViewDataDictionary{{"ActionName", "Details"}, {"HideCompany", true}})
它变得越来越丑陋。
@Html.PagedListPager(Model, page => Url.Action((string)ViewData["ActionName"], new { page = page }));
在我以前使用的框架中,我不必指定动作名称,它只使用当前处于活动状态的动作。
谢谢
【问题讨论】:
标签: c# asp.net-mvc