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