0

今天,我发现了一个非常好的功能,让我能够添加 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>
   }
}

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

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

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

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

谢谢你。

4

1 回答 1

2

您不能在助手中使用助手,因此它们不像您最初想象的那样有用:-)

Html这些辅助函数中Url不存在类似的东西。因此,如果您需要使用它们,则必须将它们作为参数传递:

@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)
于 2012-07-27T15:40:02.800 回答