【问题标题】:Razor Editor not working for some projects in solutionRazor Editor 不适用于解决方案中的某些项目
【发布时间】:2013-02-17 12:48:13
【问题描述】:

我正在使用 MVC 4 和 Razor 语法创建 CMS,但遇到了一个奇怪的问题。
在主项目中一切正常,但我在解决方案中有一些额外的项目(也是 MVC 4 项目),它们是主项目的扩展(在运行时加载),它们也有自己的视图/布局。

现在,在这些额外的项目中,剃须刀编辑器会按照应有的方式突出显示,但会强调所有内容都缺失(如 Html 帮助程序),否则它根本不起作用:


有人知道为什么吗?文件是通过“打开方式...”使用 Razor 编辑器打开的,以确保使用 Razor 编辑器。

【问题讨论】:

  • 关闭visual studio,并清除asp.net临时文件并重启VS。
  • 我在哪里/怎么做?还是您的意思是在解决方案/项目文件夹中构建的所有内容?
  • C>Windows>microsoft.net>framework>{versiyon}>Temproray asp.net 文件
  • 对不起,没有帮助...

标签: asp.net-mvc razor asp.net-mvc-4 visual-studio-2012


【解决方案1】:

我发现了问题:
我将构建配置为直接构建到我的主项目的插件文件夹以便于调试,似乎剃须刀编辑器不喜欢那样。一旦我将输出设置回“bin\”,它就会再次工作。
我现在将创建后期构建步骤来进行复制...

【讨论】:

    【解决方案2】:

    您只需在类库的根目录中添加一个虚拟的web.config 文件,其中包含以下内容,以便在 Razor 文件中欺骗 Visual Studio 的 Intellisense(取自 this blog post):

    <?xml version="1.0"?>
    <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" />
                </namespaces>
            </pages>
        </system.web.webPages.razor>
    
        <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" />
                </assemblies>
            </compilation>
        </system.web>
    </configuration>
    

    【讨论】:

    • 感谢您的提示,但由于我使用了已经存在的 MVC 4 模板(不完全相同,但相等并且由模板生成,它应该是正确的)。
    【解决方案3】:

    我用 MEF 做了类似的事情来创建插件。确保为“system.web.mvc”和“system.web.mvc.html”添加使用状态

    认为那里是正确的......没有解决方案来检查

    给你:

    @using System.Web.Mvc.Html;
    @using System.Web.Mvc;
    @model Terminals.Models.vmDeviceAdd
    @{
        ViewBag.Title = "Index";
        Layout = "~/Areas/Terminals/Views/Shared/Master/_TerminalLayout.cshtml";
    }
    

    【讨论】:

    • 感谢您的提示,但因为我使用了已经存在的 MVC 4 模板。
    • 好的,但我的意思不是在网络配置中,而是在实际视图中。是否存在并且只是从您的代码示例中省略了?
    • 我不明白你的意思——你能给我举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多