gpt4 book ai didi

c# - TagBuilder.MergeAttributes 不起作用

转载 作者:太空狗 更新时间:2023-10-29 14:42:21 28 4
gpt4 key购买 nike

我正在 MVC 中创建自己的助手。但是自定义属性没有添加到 HTML 中:

助手

public static MvcHtmlString MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName, object htmlAttributes)
{
var currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
var currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

var builder = new TagBuilder("li");

if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase)
&& currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
builder.AddCssClass("selected");

if (htmlAttributes != null)
{
var attributes = new RouteValueDictionary(htmlAttributes);
builder.MergeAttributes(attributes, false); //DONT WORK!!!
}

builder.InnerHtml = helper.ActionLink(linkText, actionName, controllerName).ToHtmlString();
return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}

CSHTML

@Html.MenuItem("nossa igreja2", "Index", "Home", new { @class = "gradient-top" })

最终结果(HTML)

<li class="selected"><a href="/">nossa igreja2</a></li>

请注意,它没有添加我在帮助程序调用中提到的类 gradient-top

最佳答案

当调用 MergeAttributes 并将 replaceExisting 设置为 false 时,它只会添加当前不存在的属性在属性字典中。它不会合并/连接各个属性的值。

我想把你的电话转到

builder.AddCssClass("selected");

之后

builder.MergeAttributes(attributes, false);

将解决您的问题。

关于c# - TagBuilder.MergeAttributes 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6441370/

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