我有存储在数据库中的标记,我将其放到页面上。下面的 是我所拥有的基本示例,没有任何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