如何使intelligense与RazorEngine协同工作
本文关键字:RazorEngine 协同工作 intelligense 何使 | 更新日期: 2023-09-27 18:30:07
我正在尝试配置RazorEngine,以便intellisense在视图上工作。我使用nuget添加了RazorEngine和Microsoft.AspNet.Mvc。我创建了TestView.cshtml并声明@model MyModel
,但它表示The name 'model' does not exist in the current context
。我也不能在视图中使用intellisense。
我错过了这里的任何一步吗?如何在视图中启用intellisense?
您可以使用
@using RazorEngine.Templating
@using Namespace.Of.My.Model
@inherits TemplateBase<MyModel>
在模板顶部。
这在带有Visual Studio 2013的新控制台应用程序上运行良好(添加对RazorEngine的引用后)。这方面的文档在这里。
编辑:
我注意到,只有当RazorEngine项目被添加到解决方案中并被直接引用时,这才有效。如果你使用NuGet包,你还需要确保以下其中一项使其工作:
- 项目输出路径设置为
bin'
,而不是bin'Debug'
和bin'Release'
- 将
RazorEngine.dll
和System.Web.Razor.dll
复制到bin'
我知道这个问题有点过时了。不管解决办法如何,我都做不到任何事情。我有一个破解程序,可能会受到一些人的欢迎。我不太喜欢它,但它是迄今为止我得到的最有用的东西。
诀窍是将"模型"定义为实际模型中的一个变量。我把它定义为"TrueModel",但无论你能想到什么名字,它都应该与"model"或"model"不冲突。然后只需将"模型"的所有实例替换为"TrueModel"。
@using Namespace.To.My.Models
@* This line should still look like an error,
but we only really care about the intellisense in the rest of the .cshtml file. *@
@{ ModelType TrueModel = (ModelType)Model; }
<div>
@TrueModel.MyProperty is here now.
</div>
<p> @TrueModel.MyOtherProperty is great! </p>
这不是一个很好的解决方案,但可能有用。
哦,我在将Razor引擎添加到我的自定义dll项目时遇到了这样的问题。要解决这个问题,你必须:
1.在web配置文件中正确设置名称空间(如果没有,希望您在视图文件夹中有它-从MVC项目复制):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.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" />
<add namespace="System.Web.Optimization" />
</namespaces>
</pages>
</system.web.webPages.razor>
...
2.用于构建到bin'
路径(不是任何其他路径,您可以使用复制后构建命令将结果移动到另一个位置)
3.清洁溶液并删除obj
和bin
文件夹,然后构建
我的视图的代码从@model MyModelClass
开始,所有操作都很好