Bob*_*way 6 c# asp.net-mvc razor
此问题之前已被问过数百次,但所提出的解决方案似乎都没有效果.
我正在Visual Studio 2013中构建一个MVC5项目.它运行正常.但是,在VS中的所有.cshtml页面中,所有内联Razor代码都用红色下划线,好像这是一个错误.@model并ViewBag声明它们在当前背景下不存在.Html.ActionLink声明它不包含ActionLink的定义.不同对象上还有其他错误,并且智能感知被破坏.
构建项目时也会显示这些错误.奇怪的是,我们已经在TFS上进行了一次门禁登记,并且它的构建就好了.
MVC和Razor通过NuGet安装.Nuget告诉我,MBC的版本是5.2.3,安装的Razor版本是3.2.3.
Views文件夹中有一个web.config文件,它看起来像这样:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.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=5.2.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.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="MyProjectNamespace" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
主web.config文件中包含以下部分:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
将System.Web.Mvc.MvcWebRazorHostFactory的版本更新为5.2.3无法解决问题.
将主web.config中的System.Web.Mvc版本更改为5.2.0不能解决问题.
将sectionGroup中为razor指定的版本更新为3.2.3会破坏应用程序.
更改网页的值:在视图中的web.config文件中启用为true,主web.config不能解决问题.
删除.suo文件,或bin和对象文件夹(与上述相结合)无法解决问题.
从Nuget安装Asp.NET Web Helpers Library无法解决问题.
将一个system.web部分添加到Views\web.Config,其中包含键入MVC版本5.2.3的页面和控件的值不能解决问题.
我还能尝试什么呢?
尝试更改 Views 文件夹中的 web.config 以使用这些版本:
System.Web.WebPages.Razor, Version=3.0.0.0
System.Web.Mvc, Version=5.2.3.0
Run Code Online (Sandbox Code Playgroud)
程序集绑定重定向表明您使用的是 Mvc 版本 5.2.3,而不是 5.2.0
我刚刚遇到了类似的问题并且解决了它。我使用的是截至 2015 年 5 月 29 日的 NuGet 最新版本,并且刚刚从 MVC3 升级。
Razor NuGet 包是 Microsoft.AspNet.Razor.3.2.3,但二进制文件使用此名称:System.Web.WebPages.Razor、Version=3.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35
这是视图文件夹中的 web.config:
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.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=5.2.3.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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.3.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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |