我有一个存储在数据库中的标记,我将其拉出并放在页面上。 下面是我所拥有的基本样本,没有任何db调用以方便示例;
控制器:
ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>";
观点:
<%= ViewData["testMarkup"] %>
现在出来了:我在这里 没有日期,这是因为它忽略了&lt;%=%&gt;部分,无论如何我可以输出上面说的字符串和woudl包含年份吗?
非常感谢,
答案 0 :(得分:1)
请执行以下操作:
ViewData["testMarkup"] = "I was here " + DateTime.Now.Year.ToString();
或者我错过了什么?代码块(例如<%= DateTime.Now.Year %>
)仅在它们是标记的一部分时才有效:
<div>The year is <%= DateTime.Now.Year %></div>
答案 1 :(得分:0)
数据库中的标记被视为字符串,而不是视图语言中的代码,因此它只是将其写为text,c#和all。
两种替代方法:
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 - 将标记存储在局部视图中,并在必要时将部分视图的名称保存在数据库中。
答案 2 :(得分:0)
我相信Phil Haack能解决我的问题。 http://haacked.com/archive/2009/04/22/scripted-db-views.aspx
我必须检查一下,看看会发生什么