【发布时间】:2013-08-27 09:12:11
【问题描述】:
我已经创建了一个自定义助手来跟踪我的 MVC 应用程序中的当前菜单项,现在我想替换我在更改之前使用的图标并设置相关的 href。以前我的列表项如下所示:
<li><a href="@Url.Action("Index", "Admin")"><i class="icon-lock"></i>Admin</a></li>
<li><a class="active" href="@Url.Action("Index", "Home")"><i class="icon-home"></i>Home</a></li>
我现在使用以下代码创建了通用菜单项:
using System;
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace MetaLearning.Helpers
{
public static class MenuExtensions
{
public static MvcHtmlString MenuItem(this HtmlHelper htmlHelper,
string text, string action,
string controller,
string iconClass,
object routeValues = null,
object htmlAttributes = null)
{
var li = new TagBuilder("li");
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
li.InnerHtml = @"<a class=""active"" href=""/""><i class=""icon-home""></i>Home</a>";
if (currentController.Contains(text))
{
li.InnerHtml = @"<a class=""active"" href=""/""><i class=""icon-home""></i>"+ text + "</a>";
}
else
{
li.InnerHtml = @"<a href=""/""><i class=""icon-home""></i>" + text + "</a>";
}
return MvcHtmlString.Create(li.ToString());
}
}
}
如何将 href 设置为“/controller”并将图标的名称设置为 iconClass。我尝试了以下方法:
li.InnerHtml = @"<a class=""active"" href=""/""><i class=""icon-home""></i>"+ text + "</a>";
这样我成功地显示了正确的文本,但是当我尝试用相关变量替换 href 或图标类名称时,我的字符串格式不正确
【问题讨论】:
标签: css asp.net-mvc controller innerhtml