razor在App_Code中使用ActionLink无效的解决方案

症状

 CS1928: “System.Web.WebPages.Html.HtmlHelper”不包含“ActionLink”的定义,并且最佳扩展方法重载“System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper, string, string, object)”的某些参数无效

英语版:

'System.Web.Mvc.HtmlHelper' does not contain a definition for 'ActionLink' and no extension method 'ActionLink' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)

无效解决方案

添加命名空间 System.Web.Mvc.Html

提供错误解决方案的连接(顺带鄙视)

http://topic.csdn.net/u/20090409/10/9b1060c3-5731-4bc5-a820-06be8a257f26.html

http://0839it.net/2011/0225/36219.html

原因分析

普通的cshtml文件继承自 System.Web.WebPages.HtmlHelper 而不是 System.Web.Mvc.HtmlHelper

This is because the compiled helpers derive from System.Web.WebPages.HelperPage, and though it exposes an Html property, its of type System.Web.WebPages.HtmlHelper rather thanSystem.Web.Mvc.HtmlHelper.

解决方案

将App_Code中的cshtml显式继承自以下的类

using System.Web.Mvc;
using System.Web.WebPages;
namespace Test
{
    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; }
        }
    }
}

然后在cshtml文件中加入以下内容

@inherits Test.HelperPage
@using System.Web.Mvc.Html
@using System.Web.Mvc

Enjoy

参考资料

http://stackoverflow.com/questions/4710853/using-mvc-htmlhelper-extensions-from-razor-declarative-views

http://stackoverflow.com/questions/4451287/razor-declarative-html-helpers/4453637#4453637

http://stackoverflow.com/questions/4866462/having-razor-helper-in-app-code-folder-using-asp-net-mvc-3

posted on   大宝pku  阅读(2611)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2011年7月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
点击右上角即可分享
微信分享提示