1

我正在使用 ASP.NET MVC 4 编写 Web 应用程序。当我Html.ActionLink用来创建链接时,我可以将 data-anything 属性传递给其htmlAttributes参数中的操作链接。但我不能使用data-,我应该使用data_。似乎ActionLink更改data_data-. 如何在自定义助手中执行此操作?一般来说,我如何修改htmlAttributes传递给助手?

public static MvcHtmlString AuthorizeModalLink(this HtmlHelper Helper, string Text, object htmlAttributes)
{
    var builder = new TagBuilder("a");
    builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.StartTag) + Text + builder.ToString(TagRenderMode.EndTag));
}

提前致谢。

4

1 回答 1

3

如果你有一个IDictionary<string, object> htmlAttributes参数,你可以使用"data-foo".

data_foo在使用匿名对象时使用。有一个函数可以用连字符替换下划线:HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)

例子:

public static HtmlString CustomCheckboxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression, object htmlAttributes)
{
    return CustomCheckboxFor(htmlHelper, expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}

public static HtmlString CustomCheckboxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression, IDictionary<string, object> htmlAttributes)
{
    string controlHtml = htmlHelper.CheckBoxFor(expression, htmlAttributes).ToString();

    return htmlHelper.FormItem(expression, controlHtml);
}
于 2013-10-01T14:51:55.197 回答