代码之家  ›  专栏  ›  技术社区  ›  JamesStuddart

用MVC实现动态标记

  •  0
  • JamesStuddart  · 技术社区  · 14 年前

    我将标记存储在一个数据库中,然后将其拉出并放到一个页面上。

    控制器:

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

    <%= ViewData["testMarkup"] %>
    

    现在,这表明: 而且没有日期,这是因为它忽略了<%=%>部分,我是否可以输出上述字符串并包含年份?

    非常感谢,

    3 回复  |  直到 14 年前
        1
  •  1
  •   djdd87    14 年前

    只需执行以下操作:

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

    还是我遗漏了什么?代码块,例如 <%= DateTime.Now.Year %> 仅当它们是标记的一部分时才有效:

    <div>The year is <%= DateTime.Now.Year %></div>
    
        2
  •  0
  •   D'Arcy Rittich    14 年前

    数据库中的标记被视为一个字符串,而不是视图语言中的代码,因此它只是将其写成文本、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-将标记存储在局部视图中,必要时将局部视图的名称保存在数据库中。

        3
  •  0
  •   JamesStuddart    14 年前