gpt4 book ai didi

c# - 自定义 HtmlHelper(ActionLink 中的图像)

转载 作者:行者123 更新时间:2023-11-28 03:42:03 25 4
gpt4 key购买 nike

我已经看到它以几种不同的方式完成,但并不是我正在寻找的具体方式。我目前有一个自定义 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());
}

有什么想法吗?

最佳答案

我会使用 UrlHelper 生成 URL,然后格式化字符串。我的示例不涉及添加条件类,但这应该很容易包含。

        var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var url = urlHelper.Action(action, controller);
var imgUrl = urlHelper.Content("~/Content/images/icons/page_edit.png");
var html = string.Format("<li><a href=\"{0}\"><img src=\"{2}\" alt=\"\" />{1}</a></li>", url, text, imgUrl);
return new MvcHtmlString(html);

关于c# - 自定义 HtmlHelper(ActionLink 中的图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com