2

我正在尝试将 Razor Engine 用作独立的模板引擎。这很好用,只是我不知道哪些属性将传递给 Razor,因此我无法声明列出我的变量的对象。我目前使用字典来执行此操作,允许我编写类似的内容:

@Model.Vars["MyProperty"]

但我希望能够简单地写:

@MyProperty

有没有办法做到这一点?

提前感谢您的回答。

4

1 回答 1

1

您可以使用一些剃刀语法为您的视图提供智能感知:

@inherits MyNamespace.MoreNamespace.MyCustomRazorModel<MyModelType>

只要您MyCustomRazorModel实现了 requiredWriteWriteLiteral方法,那么一切都应该正常工作,您可以在视图中使用以下内容:

@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 的支持视图。对于独立实现,您将为视图创建一个支持类型以像这样继承。

于 2012-10-23T17:44:51.403 回答