【问题标题】:John Resig's microtemplating framework throws errors on asp.net web pageJohn Resig 的微模板框架在 asp.net 网页上引发错误
【发布时间】:2011-07-28 16:19:44
【问题描述】:

我正在调查John Resig's microtemplating framework,它非常棒、小巧且符合我的要求。唯一的问题是语法混淆了 ASP.NET 框架。这是因为任何东西都放在了

<%=id%>
<%=(i % 2 == 1 ? " even" : "")%>

表达式语法使用服务器变量进行评估。有没有人破解/更改代码以使用 ASP.NET?

【问题讨论】:

  • 到底是什么不起作用?我看不出有什么明显的问题,而且大多数服务器端框架都有类似的机制。
  • @Pointy 你以前用过 Asp.net 表达式吗?从你上面的评论看来你还没有:(
  • 另外,那是一篇很老的博文,模板框架比那篇博文要进化得多(我认为)。您应该检查该项目的github page
  • @Pointy 我提到的基本模板是独立的,不是吗?
  • @Pointy jQuery 模板和 john resigs 微模板系统是两个不同(独立)的东西

标签: c# javascript asp.net templates iis


【解决方案1】:

只需将解析函数中的&lt;%%&gt;分别改为&lt;##&gt;即可。我已经看过了,效果很好。

 // Convert the template into pure JavaScript
    str
      .replace(/[\r\t\n]/g, " ")
      .split("<#").join("\t")
      .replace(/((^|\#>)[^\t]*)'/g, "$1\r")   //note the extra \ here
      .replace(/\t=(.*?)\#>/g, "',$1,'")      //and here
      .split("\t").join("');")
      .split("#>").join("p.push('")
      .split("\r").join("\\'")

...等等。

【讨论】:

  • 很高兴这有帮助。编码愉快。
  • 如果有帮助,我还看到
【解决方案2】:

如果由于&lt;%%&gt; 而无法正常工作,那么您可以轻松更改源代码。

    str
      .replace(/[\r\t\n]/g, " ")
      .split("<%").join("\t") // this % you could change to @ or whatever
      .replace(/((^|%>)[^\t]*)'/g, "$1\r") // same here
      .replace(/\t=(.*?)%>/g, "',$1,'") // same here
      .split("\t").join("');")
      .split("%>").join("p.push('") // same here
      .split("\r").join("\\'")

【讨论】:

  • 我确实在上面发布的代码中将“第 3 行”更改为 &lt;@ 并将“第 7 行”更改为 @&gt;,它给我带来了一个错误 Uncaught SyntaxError: Unexpected token = 它不仅仅是替换字符串跨度>
【解决方案3】:

Rick Strahl 前段时间有一篇很好的帖子,他将其修改为对 ASP.NET 友好(微模板接近尾声;向下滚动):http://www.west-wind.com/weblog/posts/2008/Oct/13/Client-Templating-with-jQuery

【讨论】:

    【解决方案4】:

    您还可以将 % 符号替换为 JavaScript 字符串中百分号的 unicode 表示形式,即“\u0025”。因此,您可以写成“”

    ,而不是字符串“”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2012-08-12
      • 2011-09-19
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      相关资源
      最近更新 更多