我有存儲在數據庫中的標記,我將其放到頁面上。下面的 是我所擁有的基本示例,沒有任何db調用以便於舉例;動態標記與MVC
控制器:
ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>";
的觀點:
<%= ViewData["testMarkup"] %>
現在這一點放:我在這裏 也沒有日期,這是因爲它是忽略了<%=% >部分,無論如何我可以輸出上述的字符串,幷包括年?
非常感謝,
我有存儲在數據庫中的標記,我將其放到頁面上。下面的 是我所擁有的基本示例,沒有任何db調用以便於舉例;動態標記與MVC
控制器:
ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>";
的觀點:
<%= ViewData["testMarkup"] %>
現在這一點放:我在這裏 也沒有日期,這是因爲它是忽略了<%=% >部分,無論如何我可以輸出上述的字符串,幷包括年?
非常感謝,
我相信菲爾·哈克對我的問題有答案。 http://haacked.com/archive/2009/04/22/scripted-db-views.aspx
,我將不得不檢查了這一點,看看會發生什麼
只需做到以下幾點:
ViewData["testMarkup"] = "I was here " + DateTime.Now.Year.ToString();
還是我失去了一些東西?代碼塊,如<%= DateTime.Now.Year %>
是唯一有效的,當他們的標記部分:
<div>The year is <%= DateTime.Now.Year %></div>
在數據庫中的標記被視爲字符串,而不是在你看來語言代碼,所以它是簡單地寫它作爲文本,C#和所有。
兩種替代方法:
1 - 使用一個模板系統,如
ViewData["testMarkup"] = "I was here #YEAR#";
與它們的值
,並具有用於替換您的令牌的方法(例如#YEAR#
)在渲染時,例如,
<%= ReplaceTokens((string)ViewData["testMarkup"]) %>
凡ReplaceTokens
樣子:
public static ReplaceTokens(string s)
{
return s.Replace("#YEAR#", DateTime.Now.Year)
}
2 - 將標記存儲在局部視圖中,並在必要時將局部視圖的名稱保存在數據庫中。
謝謝,我解決了這兩個答案 1.我想要做的是沒有一個大的查找和替換類,如在我有DateTime.Now.Year的例子,但這可能是任何代碼。 2.這將工作,但我試圖爲一個網站的模板樣式系統做到這一點,所以我可以通過管理系統編輯網站的完整標記。這可以通過使用I/O並實際編輯物理文件來完成,但我不認爲這是正確的解決方案。 – JamesStuddart 2010-09-15 13:59:30
您的解決方案的工作,但並不需要什麼,你不能把在DB中。 – JamesStuddart 2010-09-15 13:57:56
你能夠實現這一點的唯一方法是使用一些討厭的字符串操作。即在您的數據庫標記中包含佔位符,並在呈現視圖時查找並替換它們。 – GenericTypeTea 2010-09-15 14:01:25