我正在使用 MVC 4 和 Razor 语法创建一个 CMS,但遇到了一个奇怪的问题。
在主项目中一切正常,但我在解决方案中有一些额外的项目(也是 MVC 4 项目),它们是主项目的扩展(在运行时加载),它们也有自己的视图/布局。
现在在这些额外的项目中,剃须刀编辑器会按应有的方式突出显示,但会强调所有内容都缺失(如 Html 帮助程序),否则它根本不起作用:
或
有谁知道为什么?这些文件通过“打开方式...”使用 Razor 编辑器打开,以确保使用 Razor 编辑器。
我正在使用 MVC 4 和 Razor 语法创建一个 CMS,但遇到了一个奇怪的问题。
在主项目中一切正常,但我在解决方案中有一些额外的项目(也是 MVC 4 项目),它们是主项目的扩展(在运行时加载),它们也有自己的视图/布局。
现在在这些额外的项目中,剃须刀编辑器会按应有的方式突出显示,但会强调所有内容都缺失(如 Html 帮助程序),否则它根本不起作用:
或
有谁知道为什么?这些文件通过“打开方式...”使用 Razor 编辑器打开,以确保使用 Razor 编辑器。
您只需在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>
我发现了问题:
我将构建配置为直接构建到我的主项目的插件文件夹以便于调试,似乎剃须刀编辑器不喜欢那样。一旦我将输出设置回“bin\”,它就会再次工作。
我现在将创建后期构建步骤来进行复制...
我用 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";
}