ASP.NET MVC UrlHelper の単純な拡張メソッドを作成しました。構成からスタイルシート ファイルの名前を検索し、URL をスタイルシートに返すことがジョブであるため、引数は必要ありません。拡張メソッドは、おおよそ次のようになります。
public static string SiteStylesheet(this UrlHelper urlHelper)
{
var scriptFilename = UserInterfaceConfiguration.GetSection()
.Mvc.SiteStylesheet;
return urlHelper.Content(string.Format("~/Assets/Scripts/{0}",
scriptFilename));
}
そして、私はそれを次のように使用します:
<link href="<%= Url.SiteStylesheet() %>" rel="Stylesheet" type="text/css" />
ただし、メソッドは実行されず、次のようにレンダリングされます。
href="../Views/Shared/%3C%25=%20Url.SiteStylesheet()%20%25%3E"
ご覧のとおり、拡張メソッドは実行されず、全体がエンコードされているだけです。パラメータを受け入れるようにメソッド シグネチャを変更すると、次のようになります。
public static string SiteStylesheet(this UrlHelper urlHelper, string dummy)
次に、拡張メソッドが実行され、出力は期待どおりになります。
href="/Assets/Stylesheets/FluidCMS.css"
私の質問は、これは設計によるものですか、それとも ASP.NET MVC Web フォーム ビュー エンジンのバグですか?