4

WebアプリでJQueryMobileと一緒にASP.NETMVCを使用しています。リンクを生成したい:

<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-iconC#のプロパティ名としては無効です。使用@data-roleも機能しません。

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

4

3 に答える 3

8

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>  
于 2010-11-13T20:25:20.783 に答える
8

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

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })
于 2010-11-13T19:49:25.573 に答える
1

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

于 2010-11-13T19:43:03.223 に答える