【问题标题】:Using jTemplate with ASP.NET MVC将 jTemplate 与 ASP.NET MVC 一起使用
【发布时间】:2010-10-04 03:37:08
【问题描述】:

this article 中,Dave Ward 描述了如何使用 jQuery 插件 jTemplate 创建他所谓的“客户端转发器”,它将 JSON 数据解析为客户端的模板。

在文章的最后,他建议将模板放在扩展名为“.tpl”的单独文件中,并使用以下语法将数据加载到文档中:

函数应用模板(jsonData){
  // 这个方法加载 HTML 模板和
  // 准备容器 div 以接受数据。
  $('#Container').setTemplateURL('myTemplate.tpl');

  // 此方法将 JSON 数组应用于
  // 容器的模板并渲染它。
  $('#Container').processTemplate(jsonData);
}

但是,当使用 ASP.NET MVC 时,我不能只将模板文件放在我的视图旁边并使用“/Guestbook/myTemplate.tpl”调用它。但我希望将模板文件放在视图旁边,以保持一致。

我应该如何安排?返回文本文件内容的控制器操作? Global.asax.cs 中的一些配置使框架只返回这些文件,而无需解析控制器/操作 url?还有其他想法吗?

【问题讨论】:

    标签: jquery asp.net-mvc jquery-plugins jtemplate


    【解决方案1】:

    我建议改用 .htm。这在默认的 MVC 应用程序中是正常的。

    事实证明,使用 .tpl 无论如何都是一个坏主意,因为某些版本的 IIS 将其作为未知文件类型阻止,除非您明确添加它。我需要更新我的帖子。

    【讨论】:

    • 好的,会的。同时,我在模板中使用了 type="text/html" 的脚本标签,然后使用 $(scriptTagId).html() 访问它。但是, .setTemplate() 方法无法解析它 - 当我将其值硬编码到 js 中时也无法解析......它必须是一行吗?我做错了什么?
    • 要使用内联模板,相信你需要使用setTemplateElement('ElementId')。
    • 我试过这个但没有成功。 js一路运行,调试我发现所有值都OK,但是内容不会更新。我有
    • 没关系,它现在可以工作了!原来我的模板没有按应有的方式指定。对于这个问题的未来发现者:内联模板元素必须是一个文本区域,并且在 js 中引用了 id 属性(名称无关紧要)。可以通过 display:block 隐藏在 css 中;谢谢!
    【解决方案2】:

    我认为,您可以忽略该路线,并按照您的建议链接到您的模板文件:

    查看之前的答案: How to ignore route in asp.net forms url routing

    【讨论】:

    • 感谢您的链接!我已将模板保存在 ~/Views/Guestbook/postListTemplate.htm 中,并将以下内容添加到我的 Global.asax.cs 中:
      routes.IgnoreRoute("Views/Guestbook/PostListTemplate.htm");
      但是,尝试在 Firefox 中打开页面时出现 404 错误。我做错了什么?
    猜你喜欢
    • 2010-09-09
    • 2011-06-26
    • 2014-09-27
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多