【发布时间】:2012-04-09 23:36:26
【问题描述】:
我已经看到了几种不同的方法,但不是我正在寻找的具体方法。我目前有一个自定义 HtmlHelper,它将“class='currentPage'”添加到 ActionLink 以突出显示导航系统中的当前页面。
public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
string text,
string action,
string controller
)
{
string value;
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
value = htmlHelper.ActionLink(text, action, new { controller = controller }, new { @class = "currentPage" }).ToHtmlString();
return MvcHtmlString.Create(value.ToString());
}
value = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
return MvcHtmlString.Create(value.ToString());
}
这很好用,但我有一个管理区域,其中还有一个与每个菜单项关联的图像。图片位于链接中,如下所示:
<li><a href="/Admin/Blog"><img src="/Content/images/icons/page_edit.png" alt="" /> Blog</a></li>
我想为“MenuItem”创建一个覆盖方法,将图像添加到 ActionLink 中,但我有点难过。目前我有以下,将img标签放在外面......
public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
bool isAdmin,
string text,
string action,
string controller
)
{
string value;
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
value = "<img src='/Content/images/admin_icons/" + text + ".png' alt='' /> ";
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
value += htmlHelper.ActionLink(text, action, new { controller = controller }, new { @class = "currentPage" }).ToHtmlString();
}
else
{
value += htmlHelper.ActionLink(text, action, controller).ToHtmlString();
}
return MvcHtmlString.Create(value.ToString());
}
有什么想法吗?
【问题讨论】:
标签: c# html css asp.net-mvc-3