【问题标题】:Upgrading Webforms to MVC: Razor Namespace in view web.config not working将 Webforms 升级到 MVC:视图 web.config 中的 Razor 命名空间不起作用
【发布时间】: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


【解决方案1】:

它编译得很好,问题是你的 Intellisense 不工作。如我的回答 here 中所述,您可以通过强制 Razor 页面与每个构建一起编译来更新它。

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2012-08-07
    • 2020-02-18
    相关资源
    最近更新 更多