【发布时间】:2015-02-17 19:01:07
【问题描述】:
背景:我正在将 Webforms 项目升级到 MVC。我想慢慢做,所以我已经将我需要的所有东西都添加到 MVC 项目中。我遇到的一个问题是 Views 文件夹中的 Web.config。我在 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=4.0.30319.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.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
问题:当我在视图中键入诸如 @Viewbag 和 @Styles 之类的内容时,我会在它们下面看到一条红线,这只是说它们不存在。像@Html 和@RenderBody() 这样的其他人工作得很好。
假设:我认为 Views/Web.config 无法正常工作。我认为视图中没有使用任何命名空间。难道是我需要在某处添加对它的引用。
【问题讨论】:
-
升级时(在我看来)最简单的做法是使用 Visual Studio 模板创建一个新项目,然后将其与升级后的项目进行比较,看看有什么不同。
-
我采纳了您的想法并创建了 2 个项目:一个 Webforms 和一个 MVC。我完成了将网络表单转换为 MVC 的步骤。我添加并更改了所有内容,但它仍然没有加载命名空间。我真的不想将 using 语句添加到我的 .cshtml 文件中。
-
如果你构建而不添加 using 语句会发生什么?它编译吗?你可能需要确保它compiles Razor pages(看看我对那个问题的回答)。
-
谢谢梅森!!!!你的解决方案奏效了。我整天都在和这个作斗争!我只需要将代码的 sn-ps 添加到我的 .csproj 文件中,然后命名空间就开始起作用了。
-
在尝试我的解决方案之前尝试过构建吗?我认为它会建立,只是你的 Intellisense 没有工作。顺便说一句,你可以投票赞成我对这个问题的回答;)
标签: c# asp.net-mvc razor webforms