【问题标题】:Using XSLT to remove duplication in formatting between JavaScript and server-side C#使用 XSLT 删除 JavaScript 和服务器端 C# 之间的格式重复
【发布时间】:2012-04-19 18:47:03
【问题描述】:

我有一个 C#.Net 应用程序,它严重依赖 Ajax 来呈现页面。当用户向上/向下滚动页面时,会加载新内容。我通过 JSON 将原始数据传递给 Javascript,然后我的 JS 通过它创建 HTML 标记并写入页面。

同时,我需要使用 .Net 传递初始页面内容,以便搜索引擎和非 JS 浏览器可以消化一些东西。 C# 使用相同的原始数据将标记呈现到 Literal 控件中。

问题是我发现自己在 C# 和 JavaScript 中编写相同的格式规则,这似乎没有必要。

一个简化的例子:

这在 C# 中...

for (int x=0; x < lines.Length; x++)
{
    html.Append("<div>");
    html.Append(lines[x].Title);
    html.Append("</div>");
}

...在 JavaScript 中会被 this 匹配:

for (int x=0; x < lines.length; x++)
{
    html += "<div>";
    html += lines[x].Title ;
    html += "</div>";
}

更改格式/布局需要同时更改两者,这似乎很愚蠢。

所以我建议的解决方案是使用 XSLT。
我会使用 .Net 为新内容动态生成 XML 文件,然后 JS 和 .Net 都可以使用相同的 XSLT 文件转换为 XHTML 并简单地输出标记。

我能看到的唯一缺点是 .Net 只会生成 XML,然后将其转换为标记。这似乎是多余的,但实际上只有一小部分前端标记将由 .Net 生成,因此页面加载延迟应该是最小的。

对此有什么想法吗?有其他选择吗?

【问题讨论】:

    标签: javascript .net ajax json xslt


    【解决方案1】:

    如果使用 C# 生成的服务器端和使用 JavaScript 的客户端生成的 HTML 相同,我宁愿摆脱 JavaScript 生成,只在服务器上生成一次 HTML,使用 XLST 或直接使用代码。 JavaScript 可以通过 AJAX 调用获取此 HTML 并直接显示它,并在需要的地方附加事件处理程序。

    【讨论】:

    • JavaScript 如何“获取此 HTML”?如果您的意思是通过 Ajax/Json 传递 HTML,那么在响应客户端时会产生相当大的开销?
    • 是的,这就是我的意思——我添加了一个说明。根据我的经验,这种事情的过度使用并没有那么糟糕,但这当然取决于你的 HTML。考虑到通常 Web 服务器会对其进行压缩。
    • 谢谢。将其标记为答案,因为它给了我一些思考的食物,即使我仍然不确定如何最好地解决这个问题。我将在原始数据 (Json) 和完整 HTML 标记之间的数据包大小之间进行一些比较,然后权衡好处。
    • 好的...告诉我们您的发现!
    • 我查看了选项并权衡了每个选项的响应大小、所需的处理和所需的代码维护。鉴于应用程序的速度是最重要的因素,我决定坚持我目前的解决方案,即在 .Net 中生成 HTML,但在 JavaScript 中分别从 JSON 生成 HTML。这给维护(重复)带来了一些麻烦,但这是迄今为止最有效的解决方案,因为将 HTML 或 XML 传递给客户端比传递 JSON 大得多,而且 JS 处理 JSON 的速度比 XML 快得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多