2012-07-27 75 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