web-dev-qa-db-ja.com

ActionLink htmlAttributes

作品

<a href="@Url.Action("edit", "markets", new { id = 1 })" 
            data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a>

動作しない-なぜ?

@Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"})

Data-icon = "gear"のようなものをhtmlAttributesに渡すことができないようです。

提案?

80
Pavel Hlobil

問題は、匿名オブジェクトプロパティdata-iconの名前が無効であることです。 C#プロパティの名前にダッシュを含めることはできません。それを回避する方法は2つあります。

ダッシュの代わりにアンダースコアを使用します(MVCは、出力されるHTMLのアンダースコアを自動的にダッシュに置き換えます)。

@Html.ActionLink("Edit", "edit", "markets",
      new { id = 1 },
      new {@class="ui-btn-right", data_icon="gear"})

辞書を取り込むオーバーロードを使用します。

@Html.ActionLink("Edit", "edit", "markets",
      new { id = 1 },
      new Dictionary<string, object> { { "class", "ui-btn-right" }, { "data-icon", "gear" } });
191
marcind

目的のハイフンをアンダースコアに置き換えます。それは自動的にハイフンとしてレンダリングされます:

@Html.ActionLink("Edit", "edit", "markets",
    new { id = 1 },
    new {@class="ui-btn-right", data_icon="gear"})

になる:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../>
24
hemp