2012-07-27 72 views
0

今天,我发现了一个非常好的功能,可以添加cshtml帮助器。为了能够做到这一点,我必须把CSHTML文件名为“App_Code文件”文件夹中,然后加入到看起来像一个代码:当我添加文件夹'App_Code'时出现Asp.Net MVC抛出错误

@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://本地主机/ [港口] ...

我已经有代码到我的项目的其他文件夹

我必须得动。我所有的代码放到“App_Code文件”文件夹或有任何窍门,以保持我现有的结构,但这种新的“App_Code文件”文件夹?

谢谢。

回答

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) 
+0

我在网上搜索并发现一个人这样说:“默认情况下,所有的MVC项目都是Web应用程序项目(WAP)而不是Web站点项目,这意味着无需使用App_Code文件夹,因为无论如何WAP总是得到编译,这意味着所有* .cs文件你的项目将被编译,而Web站点项目只有你的App_Code文件夹中的* .cs文件将被编译。“如果我理解正确,我不能在App_Code文件夹和我的项目中的其他文件夹中都有代码。 – Samuel 2012-07-27 15:44:41

+0

你可以使用Razor的'App_Code'。别担心。只要确保该文件夹不包含任何'.cs'文件。只有剃刀的东西:'.cshtml'。 – 2012-07-27 15:48:03

+0

好吧,我只是找出你说的话!我的浏览器返回错误的原因是因为我的项目没有编译我的代码。你是一个天才家伙!非常感谢你。 – Samuel 2012-07-27 15:48:12