今天,我发现了一个非常好的功能,让我能够添加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”文件夹?
谢谢。
答案 0 :(得分: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)