2010-09-15 77 views
0

我有存儲在數據庫中的標記,我將其放到頁面上。下面的 是我所擁有的基本示例,沒有任何db調用以便於舉例;動態標記與MVC

控制器:

ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>"; 

的觀點:

<%= ViewData["testMarkup"] %> 

現在這一點放:我在這裏 也沒有日期,這是因爲它是忽略了<%=% >部分,無論如何我可以輸出上述的字符串,幷包括年?

非常感謝,

回答

1

只需做到以下幾點:

ViewData["testMarkup"] = "I was here " + DateTime.Now.Year.ToString(); 

還是我失去了一些東西?代碼塊,如<%= DateTime.Now.Year %>是唯一有效的,當他們的標記部分:

<div>The year is <%= DateTime.Now.Year %></div> 
+0

您的解決方案的工作,但並不需要什麼,你不能把在DB中。 – JamesStuddart 2010-09-15 13:57:56

+0

你能夠實現這一點的唯一方法是使用一些討厭的字符串操作。即在您的數據庫標記中包含佔位符,並在呈現視圖時查找並替換它們。 – GenericTypeTea 2010-09-15 14:01:25

0

在數據庫中的標記被視爲字符串,而不是在你看來語言代碼,所以它是簡單地寫它作爲文本,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 - 將標記存儲在局部視圖中,並在必要時將局部視圖的名稱保存在數據庫中。

+0

謝謝,我解決了這兩個答案 1.我想要做的是沒有一個大的查找和替換類,如在我有DateTime.Now.Year的例子,但這可能是任何代碼。 2.這將工作,但我試圖爲一個網站的模板樣式系統做到這一點,所以我可以通過管理系統編輯網站的完整標記。這可以通過使用I/O並實際編輯物理文件來完成,但我不認爲這是正確的解決方案。 – JamesStuddart 2010-09-15 13:59:30