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/4451287/razor-declarative-html-helpers/4453637#4453637
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架