Model view controller 基于MVC的动态标记

Model view controller 基于MVC的动态标记,model-view-controller,asp.net-mvc-2,Model View Controller,Asp.net Mvc 2,我将标记存储在一个数据库中,我将其取出并放置到一个页面上。 下面是我所拥有的基本示例,没有任何db调用以便于示例 控制员: ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>"; ViewData[“testMarkup”]=“我在这里”; 观点: <%= ViewData["testMarkup"] %> 现在,这表明:我在这里 没有日期,这是因为它忽略了部分,是否有任何方式我可以输出上述

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

控制员:

ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>";
ViewData[“testMarkup”]=“我在这里”;
观点:

<%= ViewData["testMarkup"] %>

现在,这表明:我在这里 没有日期,这是因为它忽略了部分,是否有任何方式我可以输出上述字符串并包括年份

非常感谢,

只需执行以下操作:

ViewData["testMarkup"] = "I was here " + DateTime.Now.Year.ToString();
还是我遗漏了什么?代码块(如)仅当它们是标记的一部分时才有效:

<div>The year is <%= DateTime.Now.Year %></div>
今年是

数据库中的标记被视为字符串,而不是视图语言中的代码,因此它只是将其作为文本、c#和所有内容写入

两种替代方法:

1-使用模板系统,例如

ViewData["testMarkup"] = "I was here #YEAR#";
并且有一种方法可以在渲染时将标记(例如,
#YEAR#
)替换为它们的值,例如

<%= ReplaceTokens((string)ViewData["testMarkup"]) %>

2-将标记存储在部分视图中,必要时将部分视图的名称保存在数据库中。

我相信Phil Haack已经找到了我的问题的答案


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

您的解决方案会起作用,但不是所需的,您不能将其放入数据库。实现这一点的唯一方法是使用一些讨厌的字符串操作。i、 e.在db标记中有占位符,在呈现视图时对其执行查找和替换。谢谢,我将回答这两个问题1。我试图实现的是在不使用大型的find&replace类的情况下实现这一点,如我的示例DateTime.Now.Year,但这可能是任何代码。2.这将工作,但我试图这样做的模板风格的网站系统,这样我就可以通过一个管理系统编辑网站的完整标记。这可以通过使用I/O和实际编辑物理文件来完成,但我觉得这不是正确的解决方案。
public static ReplaceTokens(string s)
{
    return s.Replace("#YEAR#", DateTime.Now.Year)
}