Nik*_*nte 70 c# razor asp.net-mvc-4
我正在升级到MVC4.我已按照http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806上的说明操作,但在我的Razor视图和布局中,我有类似的错误
我也有错误,如:
当我将鼠标悬停在@Html上时,我可以看到它的类型是System.Web.WebPages.Html.HtmlHelper而不是System.Web.Mvc.HtmlHelper
不确定其他信息是否相关,但这就是我所处的位置:
任何指针赞赏.
编辑: web.config中的所有引用和文件都升级为:
编辑(2): 在我的/views/web.config(或/views/shared/web.config,如果我在下面尝试@Paul的解决方案)中,我有自己的基类型,它继承自System.Web. Mvc.WebViewPage,包含库中的引用已更新为MVC4并转到定义带我到MVC4 dll.
新版本在这方面有什么变化吗?我在发行说明中看不到任何相关内容.
Mat*_*rey 90
我使用Web应用程序遇到了这个问题 - 当我需要时,我的.cshtml文件卡在了System.Web.WebPages.WebViewPage基类上System.Web.Mvc.WebViewPage.
首先,确保您的〜/ Views/web.config文件具有正确的pageBaseType.在我的情况下,我设置为System.Web.Mvc.WebViewPage.
<configuration>
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<!-- ... -->
</pages>
</system.web.webPages.razor>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后,重要的是,如果以上内容已经很好,有些人发现这是关键:
.userVisual Studio在项目旁边生成的文件.对于VS2015,.user和.sln文件已移至.vs文件旁边创建的隐藏文件夹.sln.但是,从下面的评论中,错误消息暗示我的工具完全使用了错误版本的MVC,删除此文件夹并不能解决问题.据我所知,还没有一个已知的解决方案.
小智 26
我在更新到MVC 5时遇到了同样的问题,它通过更新Views文件夹中的web.config来解决.
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
主机 - > factoryType设置为version:4.0.0.0希望这可以帮助任何人.
我在这里尝试了所有的解决方案,但没有一个适合我.再次,我的网站运行正常,但我没有intellisense,并在我的视图中的很多东西下得到红色波浪线,Visual Studio无法识别,其中之一Html.BeginForm(),以及任何与之有关的东西ViewBag.
我正在使用一个新的MVC 5项目.经过几个小时的比较web.config行,我终于找到了为我修复的东西.
我的root中的web.config有以下行:
<system.web>
<compilation debug="true" targetFramework="4.5" />
<!-- ... -->
</system.web>
Run Code Online (Sandbox Code Playgroud)
我比较了之前没有使用MVC 5的项目,并且复制了一个块,我注意到新版本中缺少了一个块,如下所示:
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<!-- ... -->
</system.web>
Run Code Online (Sandbox Code Playgroud)
我将上面的块复制到我的新项目的根目录中的web.config,更改版本以匹配我的项目引用中找到的每个程序集的数字(右键单击提到的每个引用并选择"属性","版本"给出在所选参考的属性窗口的底部).
实现上述之后,我现在有智能感知,但没有得到下的东西像任何未知的红色线条Html.BeginForm,ViewBag.Title等等.
小智 6
我已经运行了一个项目干净,并安装或重新安装了所有东西,并且仍然收到很多Intellisense错误,即使我的网站正在编译并运行正常.当我更改Views文件夹中的web.config文件中的版本号时,Intellisense终于为我工作了.在我的情况下,我在Orchard中编写一个模块,它在MVC区域运行,但我认为这将有助于任何人使用最新版本的MVC.这是我在Views文件夹中的 web.config
<?xml version="1.0"?>
<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.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.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.Linq" />
<add namespace="System.Collections.Generic" />
</namespaces>
</pages>
</system.web.webPages.razor>
<system.web>
<!--
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.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<controls>
<add assembly="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" 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)
您需要复制Views/Web.config到/Shared. 这将告诉 Razor 使用 MVC 基本类型和解析器。您可以在这里阅读更多信息:http://blog.slaks.net/2011/02/dissecting-razor-part-3-razor-and-mvc.html
| 归档时间: |
|
| 查看次数: |
94356 次 |
| 最近记录: |