我正在尝试从_Layout文件渲染不同的局部视图,具体取决于我所处的功能,控制器方式。
部分视图位于网站的右栏中,位于_Layout中,如下所示:
<aside id="right">
@Html.Partial("RightPartial")
</aside>
我想要做的是根据我的位置呈现不同的局部视图。 如果我在索引视图中,我可能想查看新闻,在关于视图中,我可能想要查看电话号码或其他内容。
感谢任何帮助:)
答案 0 :(得分:1)
@{
string currentAction = ViewContext.RouteData.GetRequiredString("action");
string currentController = ViewContext.RouteData.GetRequiredString("controller");
}
现在根据这些变量的值决定要渲染的部分。为了避免污染布局,我会编写一个自定义HTML帮助器:
<aside id="right">
@Html.RightPartial()
</aside>
可能如下所示:
public static class HtmlExtensions
{
public static IHtmlString RightPartial(this HtmlHelper html)
{
var routeData = html.ViewContext.RouteData;
string currentAction = routeData.GetRequiredString("action");
if (currentAction == "Index")
{
return html.Partial("IndexPartialView");
}
else if (currentAction == "About")
{
return html.Partial("AboutPartialView");
}
return html.Partial("SomeDefaultPartialView");
}
}