如何根据我使用剃须刀的页面编写一些逻辑?

时间:2012-06-25 18:18:10

标签: asp.net-mvc asp.net-mvc-3 razor

我有一个局部视图显示在我的每个页面的右上角。它有一个链接,但它需要根据我所在的页面进行更改。因此,如果我在主页上,我需要在部分视图中显示登录链接,但如果我在登录页面上,则需要显示注册链接。有人知道如何使用剃须刀吗?

3 个答案:

答案 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();