ActionLink htmlAttributes


87

WORKS

<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に渡すことができないようですか?

提案?

回答:


203

問題は、匿名オブジェクトのプロパティの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" } });

2
アンダースコアはAjax.ActionLinkヘルパーでは機能しないようです
Dmitry Efimenko 2012年

1
アンダースコアのトリックは本当に奇妙に聞こえますが、html属性にアンダースコアが必要な場合はどうでしょうか。
ミシエル2013年

1
@MichielReyers辞書を取り込むオーバーロードを使用できます
marcind 2013年

1
.net Core Tag Helpersは、これらすべての問題を破壊します-こんにちは。
niico 2017年

26

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

@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" .../>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.