我有一个局部视图显示在我的每个页面的右上角。它有一个链接,但它需要根据我所在的页面进行更改。因此,如果我在主页上,我需要在部分视图中显示登录链接,但如果我在登录页面上,则需要显示注册链接。有人知道如何使用剃须刀吗?
答案 0 :(得分:2)
您可以从RouteData获取当前操作和控制器:
@{
string controller = ViewContext.RouteData.GetRequiredString("controller");
string action = ViewContext.RouteData.GetRequiredString("action");
... decide what to render
}
但显然更好的方法是编写一个自定义HTML帮助程序,它将根据上下文生成正确的链接。
答案 1 :(得分:2)
您可以使用mvc的layout功能来使您的观看具有共同的外观和视角。感觉,然后使用@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>
}
该部分使用唯一名称定义,稍后使用相同名称在布局中的预期位置进行渲染。我认为它的设计比依赖路由信息要清晰,如果链接只依赖于视图,因为理论上,至少,视图不必知道路由引擎/控制器这导致它在第一时间呈现。
答案 2 :(得分:0)
将两个链接添加到partial并使用jquery为文档就绪的特定页面隐藏它。
所以在登录页面上,执行:
$('#registerPartialLink').hide();