使用MVC进行动态标记

时间:2010-09-15 13:44:04

标签: model-view-controller asp.net-mvc-2

我有一个存储在数据库中的标记,我将其拉出并放在页面上。 下面是我所拥有的基本样本,没有任何db调用以方便示例;

控制器:

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

观点:

<%= ViewData["testMarkup"] %>

现在出来了:我在这里 没有日期,这是因为它忽略了&lt;%=%&gt;部分,无论如何我可以输出上面说的字符串和woudl包含年份吗?

非常感谢,

3 个答案:

答案 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

我必须检查一下,看看会发生什么