我已经创建了一个自定义帮助程序,用于跟踪我的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或icon类名称时,我的字符串格式不正确
最佳答案
尽量不要用'+'运算符连接字符串。这不是一个好习惯。here您可以自己阅读更多内容。
如何将href设置为“ / controller”和图标名称
到iconClass。
li.InnerHtml = string.Format("<a href=\"{0}\"><i class=\"{2}\" /i>{1}</a>", controller, iconClass, text);
关于css - 编辑<li>的innerhtml以添加带有图标图像的<i>标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18461415/