我試圖在類庫中包含剃鬚刀(cshtml)文件,以包含在單獨的MVC4項目中。我已經得到了一切工作,除了intellisense似乎缺少某些類型,特別是System.Web.Helpers.Json
,雖然可能有其他人我還沒有發現。我的問題可能與Razor views: Intellisense not working with C# 3 for class libraries有關,但並不完全相同。下面是我的Razor視圖的樣本:類庫中的剃鬚刀,缺少智能感知
@model dynamic
@{
// ... some code ...
var options = new global::System.Web.Mvc.SelectListItem[]
{
new global::System.Web.Mvc.SelectListItem()
{
Text = "No",
Value = global::System.Web.Helpers.Json.Encode(false)
},
new global::System.Web.Mvc.SelectListItem()
{
Text = "Yes",
Value = global::System.Web.Helpers.Json.Encode(true)
}
};
}
@(global::System.Web.Mvc.Html.SelectExtensions.DropDownList(this.Html, string.Empty, options))
當我最初打開剃鬚刀文件,我會看到幾個警告幾種類型的錯誤:
- 類型或命名空間名稱「動態」不能找到(是否缺少 集引用?)
- 功能「隱式類型的局部變量」不能被使用,因爲它是不ISO-2 C#語言規範
- 功能「對象initializ的一部分 呃」不能使用,因爲它不是一部分...
- 類型或命名空間名稱‘的Json System.Web.Helpers‘ ’不存在命名空間存在’(是否缺少程序集引用?)
當我構建項目時,前兩個三種類型的錯誤消失,但最後一個將會持續。當我輸入System.Web.Helpers.
僅包含Antiforgery
,UnvalidatedRequestValues
和Validation
時,會出現智能感知。當我在.cs文件中輸入相同的代碼時,我看到了Json
以及我期望看到的所有其他選項。當我將這些文件複製到我的實際MVC項目中時,它不會在編輯器中顯示任何錯誤並且運行得很好。
這裏是Web.config文件我已經添加到我的項目得到它的工作這麼遠:
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<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="System.Web.Helpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<compilation targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
如何讓智能感知認識到這個類?