Я создал простой метод расширения для 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?