2011-04-08 167 views
0

我基本上沿襲了這篇文章:http://develoq.net/2011/how-to-create-custom-html-helpers-for-asp-net-mvc-3-and-razor-view-engine/MVC3:需要幫助的HTML輔助

我HtmlHelper類位於我的MVC項目的根目錄:

using System.Web.Mvc; 

namespace MvcHtmlHelpers 
{ 
    public static class HtmlHelperExtensions 
    { 
     public static MvcHtmlString Hello(this HtmlHelper helper) 
     { 
      return new MvcHtmlString("Hello!"); 
     } 
    } 
} 

如果我引用它的看法: @using MvcHtmlHelpers;我得到智能感知和查看代碼驗證罰款(沒有紅色下劃線)。

如果我沒有在視圖中引用它,而是在2個web.config文件中的一個或兩個中引用它,我沒有獲得智能感知,現在@Html.Hello()是紅色下劃線。

現在最好的部分是,當我運行時,即使我沒有在任何地方引用它,它也會呈現完美的效果。理想情況下,我想在web.config中引用它,並在視圖中獲取intellisense,而不是在該視圖中引用它。謝謝!

更新:我想東西得到緩存的地方。它在任何地方都沒有被引用時不渲染。對不起。我仍然想在視圖中獲得智能感知和驗證。謝謝。

回答

3

如果您正在使用Razor視圖引擎,你需要引用它~/Views/web.config而不是在~/web.config

<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="MvcHtmlHelpers" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

然後重新編譯,關閉並重新打開Razor視圖,如果它是你的幸運日,你甚至可能得到智能感知。如果沒有,你可能會詛咒微軟。

+0

這就是我正在做的,是的。 – Dimskiy 2011-04-08 16:49:12

+0

@Dimskiy,如果將正確的名稱空間添加到'〜/ Views/web.config',那麼在運行應用程序時,您的應用程序至少可以工作。就Intellisense而言,正如我在答覆中所說的,這取決於是否是你的幸運日。通常它的作品,但... – 2011-04-08 16:51:00

+1

哈!所以VS的關閉和重開就做到了!我正要開始敲擊鍵盤上的頭部。非常感謝!我想畢竟,這是我的幸運日;) – Dimskiy 2011-04-08 16:53:10