2012-10-23 63 views
2

我想使用Razor Engine作爲獨立的模板引擎。除了我不知道哪些屬性會傳遞給Razor,因此我無法聲明列出我的變量的對象。我目前還使用這樣一個字典,讓我寫這樣的事情:動態剃刀數據源

@Model.Vars["MyProperty"] 

但是我想能夠簡單地寫:

@MyProperty 

是否有某種方式來做到這一點?

在此先感謝您的答案。

+1

爲什麼@ Model.MyProperty不起作用? – Grozz

回答

1

你可以使用一些剃刀語法爲您的視圖提供智能感知:

@inherits MyNamespace.MoreNamespace.MyCustomRazorModel<MyModelType> 

只要你MyCustomRazorModel實現WriteWriteLiteral等方法,那麼一切都應該正常工作,你可以使用下面的需要在您的看法:

@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中RazorEngine後盾視圖。淨。對於獨立實現,您將爲此視圖創建一個支持類型,以繼承此類。