添加文件夹'App_Code'时,Asp.Net MVC抛出错误

时间:2012-07-27 15:32:57

标签: asp.net-mvc-3 html-helper app-code

今天,我发现了一个非常好的功能,让我能够添加cshtml帮助器。为了能够做到这一点,我必须将cshtml文件放在名为“App_Code”的文件夹中,然后添加到看起来像这样的代码中:

@using System.Security.Policy

@helper jQuery(){
   if (System.Diagnostics.Debugger.IsAttached)
   {
        <script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
   }
   else
   {
        <script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
   }
}

在仅使用一个文件添加此文件夹后立即出现问题,当我尝试在浏览器中访问页面时,收到服务器错误。

“NetworkError:500内部服务器错误 - http:// localhost / [端口] ...

我已将代码放入项目的其他文件夹中。

我必须将所有代码移到“App_Code”文件夹中,或者是否有任何技巧可以保留我现有的结构但是使用这个新的“App_Code”文件夹?

谢谢。

1 个答案:

答案 0 :(得分:2)

您无法在帮助程序中使用帮助程序,因此它们不像您最初想的那样有用:-)

HtmlUrl之类的内容并不存在于这些辅助函数中。因此,如果您需要使用它们,则必须将它们作为参数传递:

@using System.Web.Mvc
@using System.Security.Policy

@helper jQuery(UrlHelper urlHelper)
{
   if (System.Diagnostics.Debugger.IsAttached)
   {
        <script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
   }
   else
   {
        <script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
   }
}

并且在调用时将当前UrlHelper的实例传递给它:

@Foo.jQuery(Url)