2013-03-27 57 views
0

問題是:plataform爲客戶端生成報告。但是每個客戶報告中都有相同的信息,但是具有不同的佈局。 每次客戶端想要更改佈局時,我都不想生成部分視圖,重新編譯和發佈解決方案。ASP.NET MVC渲染從字符串到generete的視圖報告

我想在數據存儲中存儲一個代表分部視圖(報表)的字符串,並在運行時將其傳遞給視圖並進行呈現。

我一直在尋找一些解決方案,但涉及到有部分視圖文件。 文章(http://www.umbraworks.net/bl0g/rebuildall/2009/11/17/ASP_NET_MVC_and_virtual_views)給出了一個理念,但在這種情況下,客戶端總是訪問相同的URL(例如〜/ Reports/SomeReport/2,其中2是客戶端擁有的對象的ID)客戶端並且該對象是一個客戶端,許多對象)。

我該如何解決這個問題?

在此先感謝

回答

1

編輯:四處移動RazorEngine評論的答案,這似乎是更相關。

對於動態模板(例如,從數據庫中檢索模板內容然後綁定到模型),看起來RazorEngine適用於此用例。


人丁原始HTML [nkvu - 剛剛離開這裏歷史的目的爲「原始」,導致正確的響應不正確的響應]

如果你有一個HTML字符串,你只是想要顯示在屏幕上,那麼你可以使用Html.Raw()。這裏是一箇舊的example,但它應該說明Raw()如何工作。對不起,如果我誤解了你的用例。

但是,作爲一種良好的做法,您應該確保您測試/防禦由於您直接呈現HTML而可能出現的各種注入攻擊。我會嘗試找到一些鏈接,供您考慮&更新此響應時,我做

+0

感謝您的想法。但我在說明中失敗了。 該視圖具有與數據庫中的數據關聯的模型。 HTML不是靜態的。 我想將模型傳遞給視圖並進行渲染。視圖(佈局)可以更改。 – joaoasrosa 2013-03-27 17:31:44

+0

好的,我想我明白了。也許像[this](http://razorengine.codeplex.com/)項目可以幫助你從數據庫檢索視圖/模板字符串? (在我看到的例子中,爲了簡單起見,它們只是在代碼中初始化它,但沒有理由模板字符串不能來自數據庫) – nkvu 2013-03-27 17:42:52

+0

你解決了我的問題! :) 謝謝! – joaoasrosa 2013-03-27 18:09:53