2012-10-10 53 views
0

我在互聯網上搜索了幾天,但沒有找到它。通過Razor Markup查看並處理它

我的模型有一個屬性,其中包含一個包含Razor標記的html塊。 〔實施例:

public class ViewModel 
{ 
    public string Content = "<div>@Html.TextBox(\"UserName\")</div>"; 
} 

在視圖中,我顯示與

@Html.Raw(Server.HtmlDecode(Model.Content).toString()) 

我需要能夠在剃刀標記轉換成HTML,但因爲內容是通過模型在下降,視圖引擎不處理它。

  • 我試過簡單地放入內容,只使用.Raw(Model.Content),.Encode(Model.Content),沒有任何工作。

有什麼想法?

+0

好像你違背了MVC框架的全部目的。爲什麼不只是傳遞模型中的實際數據,並使用View中的數據創建標記? – aserwin

+0

好的一點,並詳細說明該項目:該網站使用頁面編輯器,它將存儲在數據庫中的部分視圖的全部內容,並在請求時加載它。所以,我需要能夠從包含剃鬚刀標記的數據庫中讀取一個字符串。 – Neovivacity

+0

我懷疑你必須在將剃鬚刀保存到你的數據庫之前解碼成HTML格式。 –

回答

1

您可以使用RazorEngine包,它允許你解析和執行剃刀代碼。這是說我不會建議你給你的用戶直接編輯Razor模板的權力。您正在您的網站上打開一個巨大的安全漏洞。

還有其他的模板引擎如DotLiquid例如它更適合於場景中你不信任用戶輸入。