如何为C#MVC项目定义razor助手,以便找到名称空间?
MVC4,实体框架5,ASP.NET4。我正在尝试制作一个剃须刀助手,可以跨多个区域使用。这已经被问了好几次了,但是在谷歌上实现了所有的解决方案之后,问题依然存在 intellisense正在识别帮助程序,但在live server上,我无法逃脱编译错误“找不到类型或命名空间名称‘MyHelpers’(是否缺少using指令或程序集引用?) 以下是我所做的:如何为C#MVC项目定义razor助手,以便找到名称空间?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,MVC4,实体框架5,ASP.NET4。我正在尝试制作一个剃须刀助手,可以跨多个区域使用。这已经被问了好几次了,但是在谷歌上实现了所有的解决方案之后,问题依然存在 intellisense正在识别帮助程序,但在live server上,我无法逃脱编译错误“找不到类型或命名空间名称‘MyHelpers’(是否缺少using指令或程序集引用?) 以下是我所做的: 在/App_代码中定义@helper类 在/Views/Helpers中定义@helper类 在 视图的名称/web.config 在中
- 在/App_代码中定义@helper类
- 在/Views/Helpers中定义@helper类
- 在
视图的名称/web.config - 在中添加了对MyHelper命名空间的引用 &MyArea/Views/web.config的ltsystem.web.webPages.razor>
- 将所有建议使用的指令添加到帮助器定义的顶部
- @使用System.Web.Mvc李>
- @使用System.Web.Mvc.Html李>
- @使用System.Web.Mvc.Razor李>
- @使用System.Text.RegularExpressions
有人有什么想法吗?我个人不喜欢在App_Code文件夹中添加类,该文件夹在过去是为网站项目设计的 如果您的解决方案只包含一个MVC项目,您可以在MVC项目中创建一个名为Helpers的文件夹,并在其中放置Helpers类
<强> FY:如果您正在开发一个大型应用程序,则需要考虑为辅助类创建一个单独的类库项目。
不要使用视图帮助器(<代码> @帮助器< /代码>语法)。这些仅在运行时进行评估,如果不是不可能正确测试的话,也是很困难的
相反,创建一个扩展HtmlHelper
的静态类,如下所示:
public static class HtmlHelperExtensions
{
public static IHtmlString Sample(this HtmlHelper htmlHelper)
{
...
}
}
如果不使用名称空间声明,它将成为全局的,您可以从任何位置(包括视图)引用它。这在大多数情况下都是一个坏主意,但对于扩展来说,这没关系,除非您在使用提供具有相同方法名的类似扩展的库时遇到问题。如果您选择为它们命名以确保安全,那么您只需要将名称空间添加到视图目录的Web.config中,就像您以前所做的那样。是的,我同意为文件夹保留魔法名称不是一个好的设计。我的解决方案确实有几个项目来分离不同数据库的dll。我会尝试在某个时候为助手类添加一个单独的项目。我试试看,然后发回。谢谢。RazorGenerator不再有效,它允许您获得编译时间checking@Arjang当前位置我写这篇文章时也是这样。然而,必须安装和配置RazorGenerator(这不是每个人都会做的,甚至不是每个人都想做的),并且您只能进行编译时检查,因为它实际上是在将视图编译成代码;它就是这样做的。使用
@helper
仍然是一个可怕的想法,即使是在编译时检查,如果不是因为违反了MVC模式的核心原则。