我試圖在MVC 3 RTM項目的App_Code文件夾中創建Razor聲明式幫助程序。我遇到的問題是MVC HtmlHelper擴展(如ActionLink)不可用。這是因為已編譯的幫助程序派生自System.Web.WebPages.HelperPage,盡管它公開了一個Html屬性,但其類型System.Web.WebPages.HtmlHelper而不是System.Web.Mvc.HtmlHelper。我遇到的那種錯誤的例子是:'System.Web.Mvc.HtmlHelper'不包含'ActionLink'的定義,并且找不到擴展方法'ActionLink'接受類型為'System.Web.Mvc.HtmlHelper'的第一個參數(您是否缺少using指令?或裝配參考?)我唯一的解決方案是創建自己的HelperPage并覆蓋Html屬性:using System.Web.WebPages;public class HelperPage : System.Web.WebPages.HelperPage { // Workaround - exposes the MVC HtmlHelper instead of the normal helper public static new HtmlHelper Html { get { return ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page).Html; } }}然后,我必須在每個助手的頂部寫以下內容:@inherits FunnelWeb.Web.App_Code.HelperPage@using System.Web.Mvc@using System.Web.Mvc.Html@helper DoSomething(){ @Html.ActionLink("Index", "Home")}在MVC 3中是要這么難嗎,還是我做錯了什么?
4 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
看一下對這個問題Marcind的回答。您遇到的限制是在App_Code文件夾中放置聲明性視圖。
將您的助手放入App_Code中是可行的,但是有一些限制會影響某些MVC方案(例如:無法訪問標準MVC Html。)
- 4 回答
- 0 關注
- 536 瀏覽
添加回答
舉報
0/150
提交
取消