查找html中active,如何在Html.Helper中实现“if active”检测?

我不确定这是否是简单的误解或不正确的范式来使用这种功能,但是这是我想出迄今...

我想当我们检测到用户与href在同一页面上时,提供一个通用的功能,添加一个css属性(在本例中为“active”)到一个定位标记。在MVC(特别是我的应用程序)的上下文中,我将其解释为“当前活动的控制器与超链接的目标位置相同”。

好吧!所以。我在哪里与代码?

我已经实现了下面的Html助手扩展,以帮助创建从我需要的标准链接稍微“调整”。

public static MvcHtmlString ActiveActionLink (this HtmlHelper helper, string labelText, string action, string controller)

{

var cssProprties = controller + " active";

return helper.ActionLink(labelText, action, controller, null, new { @class = cssProprties });

}

目前你可以看到我正在申请两个css类。首先是控制器的名称,这很好。后来,我没有逻辑,我只是​​添加活动的CSS类。这是我一直试图添加逻辑的。

我的理论是,我需要做的就是挖掘正确的对象,找到我目前在哪个控制器中,并将其匹配到传入的“控制器”参数。如果这些匹配,则添加活跃的班级。

所以,在两个问题...

这是在ASP.NET MVC “思考” 正确的/可接受的方式吗?

如果是这样的话:我可以从我所在的级别挖掘哪些对象,以便访问用于比较的信息 - 我需要哪些?

UPDATE:

后,当我写SO一个问题通常是什么发生了,我灵机一动。我注意到的代码在BeginForm帮助金块,导致我创造这个例子:

public static MvcHtmlString ActiveActionLink (this HtmlHelper helper, string labelText, string action, string controller)

{

var cssProprties = controller;

// if this controller is the target controller, page is active.

if (helper.ViewContext.RouteData.Values["controller"].ToString() == controller)

cssProprties += " active";

return helper.ActionLink(labelText, action, controller, null, new { @class = cssProprties });

}

所以我想这回答了“的对象,我可以挖通?”题。另外,因为这直接受到MVC源代码的影响 - 可能是“这是ASP.NET mvc中”思考“的正确/可接受的方式吗?”问题呢?

2010-09-22

Mike

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值