我有一个局部视图,显示在我每个页面的右上角。它有一个链接,但这需要根据我所在的页面进行更改。因此,如果我在主页上,我需要在部分视图中显示一个登录链接,但如果我在登录页面上,我需要显示一个注册链接。任何人都知道如何使用剃须刀做到这一点?
问问题
140 次
3 回答
2
您可以从 RouteData 获取当前操作和控制器:
@{
string controller = ViewContext.RouteData.GetRequiredString("controller");
string action = ViewContext.RouteData.GetRequiredString("action");
... decide what to render
}
但显然更好的方法是编写一个自定义 HTML 帮助程序,它将根据上下文生成正确的链接。
于 2012-06-25T18:27:22.280 回答
2
您可以使用 mvc 的布局功能使您的视图具有共同的外观和感觉,然后使用该@section
功能(也在链接中描述)渲染不同页面的部分
编辑
实现该@section
功能:
在_layout.cshtml中:
@*if section is optional for some pages*@
@if (IsSectionDefined("Link"))
{
@RenderSection("Link")
}
然后,在每个页面中(在我的例子中是 index.cshtml):
@section Link
{
<a href="#">the link</a>
}
该部分是使用唯一名称定义的,稍后会使用相同的名称在布局中的预期位置呈现。
我认为它比依赖来自路由的信息更清晰的设计,如果链接仅依赖于视图,因为理论上,至少,视图不必知道导致它的路由引擎/控制器首先呈现。
于 2012-06-25T18:27:27.793 回答
0
将两个链接添加到部分并使用 jquery 将其隐藏在文档准备好的特定页面中。
所以在登录页面上,执行:
$('#registerPartialLink').hide();
于 2012-06-25T19:56:26.593 回答