今天,我找到了一个非常好的功能,让我能够添加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”文件夹?

谢谢。

有帮助吗?

解决方案

你不能在帮助者内使用助手,这样他们就不会像最初想到的那样有用:-)

像生成的辅助函数中不存在于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)
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top