Razor Editor不适用于某些解决方案项目

时间:2013-02-17 12:48:14

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

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

现在,在这些额外的项目中,剃刀编辑器按照应有的方式进行强调,但强调所有内容都缺失(如Html助手)或者根本不起作用:
Missing

Not working

有没有人知道为什么?使用Razor编辑器通过“Open With ...”打开文件,以便使用Razor编辑器。

3 个答案:

答案 0 :(得分:1)

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

<?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>

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我使用MEF创建了一个类似的东西来创建插件。确保为'system.web.mvc'和'system.web.mvc.html'

添加一个using statememnt

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

你走了:

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