我正在尝试将 Razor Engine 用作独立的模板引擎。这很好用,只是我不知道哪些属性将传递给 Razor,因此我无法声明列出我的变量的对象。我目前使用字典来执行此操作,允许我编写类似的内容:
@Model.Vars["MyProperty"]
但我希望能够简单地写:
@MyProperty
有没有办法做到这一点?
提前感谢您的回答。
您可以使用一些剃刀语法为您的视图提供智能感知:
@inherits MyNamespace.MoreNamespace.MyCustomRazorModel<MyModelType>
只要您MyCustomRazorModel
实现了 requiredWrite
等WriteLiteral
方法,那么一切都应该正常工作,您可以在视图中使用以下内容:
@MyProperty
假设您有这样的定义:
public class MyCustomRazorModel<T>
{
public string MyProperty { get; set; }
}
我提到您的支持 Razor 实现可能应该是通用的,以便您可以将它与您想要的任何模板模型一起重新使用。这也是 Razor 引擎在 ASP.NET 中的工作方式,通过提供在@Model
属性中公开模型的通用模型。
编辑
例如,看看下面的类,看看框架人是如何做到的:
http://msdn.microsoft.com/en-us/library/gg402107(v=vs.108).aspx
这是 ASP.NET 中 RazorEngine 的支持视图。对于独立实现,您将为视图创建一个支持类型以像这样继承。