2011-02-24 74 views
22

我無法獲得我自己的html幫手的智能感知。我CustomHtmlHelpers.cs看起來是這樣的:爲什麼我的Html Helpers沒有智能感知?

using System.Web.Mvc; 
using System.Text; 
using System.Web; 

    namespace laget.Web.Helpers 
    { 
     public static class CustomHtmlHelpers 
     { 
      //MY HELPERS 
     } 
    } 

和我的web.config:

<pages> 
     <namespaces> 
     <add namespace="laget.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     <add namespace="System.Web.Helpers" /> 
     </namespaces> 
    </pages> 

如果我在我的角度提出<@using laget.Web.Helpers>,我得到的智能感知問題解決。

Web.config中的代碼不夠用嗎?

回答

24

有時它似乎並沒有馬上工作。嘗試關閉.cshtml文件,然後重新打開它。然後,如果這不起作用,請嘗試重新啓動Visual Studio。還要確保你實際編譯了你的項目,intellisense將不會與非編譯助手一起工作。

+2

你是對的。重新啓動的Visual Studio,它可以馬上運行。 – MikeB 2011-02-24 20:38:09

+0

非常感謝你!我至少在今天花了一個小時在這個:) :) – MikeB 2011-02-24 20:40:33

+0

是的,我也花了一些時間在這方面,謝天謝地,最終的問題是「你是否試圖關閉它,然後再打開」破壞:) – 2011-02-24 20:46:34

0

它需要在本地頁面上。我很確定這與名稱空間解析有關。如果沒有本地使用聲明,您不完全確定您所指的是什麼。

6

我很確定你沒有編輯正確的Web.config文件。

您需要將您的名稱空間添加到Views目錄中的名稱空間。

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="laget.Web.Helpers" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+1

我試過兩個文件,但沒有任何文件... – MikeB 2011-02-24 20:30:57

+1

卸載並重新加載項目。 – 2011-08-22 13:39:30

0

我今天也遇到過這個。有時只需在Visual Studio中關閉Razor視圖的窗口並重新打開它就可以實現這一功能,而無需執行完整的Visual Studio重新啓動。

5

在大多數情況下,您實際上不需要重新啓動Visual Studio。所有你需要做的就是關閉.cshtml文件並重新打開它!

+0

這工作,謝謝!比重新啓動VS好得多,因爲我們都知道永遠需要! :) – SomeRandomDeveloper 2015-07-23 17:31:59

0

我試圖解決像昨天這樣的問題。我已經預編譯了dll(項目名稱,例如:MyHtmlHelpers),其中包含幫助程序和許多其他類。

我在web項目中引用了程序集,並且在intellisense中顯示了所有「標準」--helpers,但是,即使我在根目錄和views-folder中的web.config中都添加了命名空間,也無濟於事。運行項目幫助程序時有效,但不在智能感知中。

我添加了一個新的類,寫web項目中一個新的HTML輔助,增加了命名空間的web.config。這工作。

經過一段時間的添加嘗試我的最後一張卡,將MyHtmlHelpers項目添加到我的webproject相同的解決方案。那就是訣竅。我沒有改變配置中的任何東西,只是將項目添加到相同的解決方案,並將參考文獻更改爲指向已編譯的dll項目。

Isen't那種奇怪?一個VS-錯誤?

0

我發現我是添加引用了錯誤的web.config文件。這不是主要的配置,但在views目錄下的Web.config ...

0

所以現在我會告訴你的步驟

1.創建或打開一個現有的類庫項目(如果你打開一個現有的一定要去除MVC5 NuGet包)

2.添加了MVC(5。在解決方案資源管理0)NuGet包( 右鍵單擊項目 - >管理的NuGet軟件包 - >搜索MVC和安裝「微軟ASP.NET MVC」)

3.關閉任何和所有打開的文件.cshtml

4.Right點擊項目 - >屬性 - >建設 - >更改輸出路徑到您的項目的「bin /」

5.Add以下最低的Web.config你的類庫項目 根(web配置文件僅適用於intellisense。配置(通過Web.config) 應在託管ClassLibrary程序集的WebApplication中完成)

6.清理並構建解決方案。

7.Open CSHTML文件,現在就來試試:)

0

我發現,如果它仍然無法正常工作,你可能需要去自定義類的屬性,並改變從「內容」的生成操作編譯」。這爲我解決了。