rid*_*nsb 6 html c# asp.net-mvc tagbuilder
我在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));
}
Run Code Online (Sandbox Code Playgroud)
CSHTML
@Html.MenuItem("nossa igreja2", "Index", "Home", new { @class = "gradient-top" })
Run Code Online (Sandbox Code Playgroud)
最终结果(HTML)
<li class="selected"><a href="/">nossa igreja2</a></li>
Run Code Online (Sandbox Code Playgroud)
请注意,它没有添加gradient-top我在helper调用中提到的类.
A B*_*nch 18
MergeAttributes使用replaceExistingset to 调用时false,它只会添加属性字典中当前不存在的属性.它不会合并/连接各个属性的值.
我相信你的号召
builder.AddCssClass("selected");
Run Code Online (Sandbox Code Playgroud)
后
builder.MergeAttributes(attributes, false);
Run Code Online (Sandbox Code Playgroud)
将解决您的问题.
| 归档时间: |
|
| 查看次数: |
4413 次 |
| 最近记录: |