2014-02-16 85 views
2

我使用Visual Studio 2013在.NET 4.5.1中開始了一個新的Nancy項目。 作爲視圖引擎,我使用的是Razor。 一切都建立和工作,但我想不使用完整的命名空間,而是想智能感知。 這可能嗎?南希的剃刀智能感知

這是我的web.config:

<configuration> 
    <configSections> 
    <section name="razor" type="Nancy.ViewEngines.Razor.RazorConfigurationSection, Nancy.ViewEngines.Razor" /> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false"/> 
    </sectionGroup> 
    </configSections> 

    <razor disableAutoIncludeModelNamespace="false"> 
    <assemblies> 
     <add assembly="IC.Resources" /> 
    </assemblies> 
    <namespaces> 
     <add namespace="IC.Web.Client.Models" /> 
     <add namespace="IC.Resources" /> 
    </namespaces> 
    </razor> 

    <system.web.webPages.razor> 
    <pages pageBaseType="Nancy.ViewEngines.Razor.NancyRazorViewBase"> 
     <namespaces> 
     <add namespace="Nancy.ViewEngines.Razor"/> 
     <add namespace="IC.Web.Client.Models" /> 
     <add namespace="IC.Resources" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
</configuration> 

如果我使用IC.Resources或IC.Web.Client.Models代碼,我仍然需要使用完整的命名空間。

這是我的觀點的頂部:

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<IC.Web.Client.Models.LoginModel> 

它的工作原理,如果我加入這個在每個頁面的頂部:

@using IC.Resources; 
@using IC.Web.Client.Models 

但我不喜歡在重複這每一頁。 我試着將使用添加到佈局頁面,但這不起作用。

@{ Layout = "_layout.cshtml"; } 

回答

4

如果添加System.Object的定義您的pageBaseType應該否定需要添加兩個using語句。

<system.web.webPages.razor> 
    <pages pageBaseType="Nancy.ViewEngines.Razor.NancyRazorViewBase`1[[System.Object]]"> 
     <namespaces> 
      <add namespace="Nancy.ViewEngines.Razor" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+2

真的很有幫助!但是你能解釋一下''[[System.Object]]'語句嗎? – Avlin

+0

這是來自.net某處的類型定義。我在使用p.GetType()之前就已經看到過這一點。最初的定義是「Nancy.ViewEngines.Razor.NancyRazorViewBase 」。不要問我爲什麼這樣。 – CyberFox