4

htmlAttributes をメソッドに渡したいのobjectですが...

     foo.HtmlAttributes(new { data_bind = "foo"});

アンダースコアをハイフンとして使用したすべての MVC HtmlHelpers で、有効な html が出力されます。"data-bind"

ボンネットの下で、これは次の質問に従って起こっていることです:

オブジェクト HtmlAttributes から値を取得する方法

オブジェクトを HTML 属性に渡す

    public virtual void HtmlAttributes(object htmlAttributes)
    {
       this.Attributes = new RouteValueDictionary(htmlAttributes);
    }

その後、これは次のように呼び出されます。

    internal virtual void ApplyConfiguration(TagBuilder tag)
    {
            tag.MergeAttributes(this.Attributes);
    }

ただし、これは次のように出力されます。

<div data_bind="foo"></div>

有効な HTML を出力するにはどうすればよいですか?

更新 Zabavskyのおかげで...

public virtual void HtmlAttributes(object htmlAttributes)
{      
        this.Attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
}
4

1 に答える 1

6

HtmlHelperクラスには、HTML5 に準拠したマークアップの作成に役立つAnonymousObjectToHtmlAttributesメソッドがあります。このメソッドは、アンダースコア文字をハイフンに置き換えます。

于 2013-05-22T12:35:56.017 に答える