質問

WebアプリでJqueryMobileとともにASP.NET MVCを使用しています。リンクを生成したい:

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>

ヘルパーエクステンションメソッドがあります。

<%= Html.ActionLink<WhateverController>(c => c.Previous(), 
         "Previous", 
         new { data-role = "button", data-icon="arrow-l" } ) %>

それ外 data-roledata-icon C#のプロパティ名として無効です。使用 @data-role 動作しません。

これを回避する構文はありますか?または、正しい属性名を知っているより専門的なヘルパーを作成することに固執していますか。

役に立ちましたか?

解決

使用できるはずです IDictionary<string, object> 匿名オブジェクトの代わりに:

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })

他のヒント

Svickの応答に加えて、アンダースコアがあるプロパティが自動的にダッシュに変換されるASP.NET MVC 3にきちんと変化しました。

したがって、このようなコードがある場合:

<%= Html.ActionLink<WhateverController>(c => c.Previous(),  
     "Previous",  
     new { data_role = "button", data_icon="arrow-l") %> 

ダッシュでマークアップをレンダリングします。

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>  

そのキャラクターは減算/単位のマイナス演算子でもあるため、識別子で使用できません。カスタムヘルパーメソッドはおそらく最善の策だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top