我爲ASP.NET MVC UrlHelper創建了一個簡單的擴展方法。它不需要任何參數,因爲它的工作是從配置中查找樣式表文件的名稱,並將url返回到樣式表。擴展方法看起來大致是這樣的:UrlHelper擴展方法調用編碼未執行
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窗體視圖引擎中的錯誤?
謝謝,但包含我的擴展方法的命名空間是在web.config中,我仍然看到相同的行爲。 – user93255 2009-04-22 14:24:35
謝謝,我自己陷入了這個問題。也沒有注意到,有2個web.configs – 2009-05-12 22:28:47