4

我正在使用 ASP.NET MVC 项目和 jQuery 来处理异步请求。有时对于异步请求,我需要返回一个初始化 JavaScript 片段并与一个 HTML 片段一起执行(我希望这个 JavaScript 在服务器上呈现)。

现在我正在使用我自己的带有 RegisterStartupScript() 方法的 ScriptsHelper 类(将数据添加到 HttpContext.Current.Items)。然后在针对异步请求的 global.asax HttpApplication.EndRequest() 中,我将所有已注册的脚本附加到输出(包含在标签中)。当接收到的 HTML 附加到 DOM 时,jQuery.fn.load() 成功执行它们——这正是我所需要的。您认为这是“正确”(好)的解决方案,还是您可以提出更好的建议?谢谢。

4

2 回答 2

1

在我开始使用 jquery 并最终求助于使用eval(). 我正在返回一个 javascript 文本片段作为不可见 DOM 元素值的一部分,以及我插入到 DOM 中的其余 HTML。

我在 IE6 中调试这种动态生成的 javascript 时遇到了很多麻烦,所以这个解决方案对我来说效果很好,因为我可以检查正在评估的 DOM 元素的值。但是,我一直对使用eval.

听起来你的解决方案有一个合理的服务器端渲染架构,而不是我的意大利面条代码,而且这种技术看起来很符合 jQuery.fn.load 的精神,所以我不会太担心。

于 2009-06-17T19:49:47.237 回答
0

是的,我认为 jQuery 在内部为你调用 eval() - 你在使用 append 吗?我认为这种技术在大多数情况下都非常有效。如果从服务器返回的数据在重复的列表中,您可能希望使用添加到 jQuery 1.3 的 live 函数来查看它允许您将事件附加到与您的选择器匹配的所有当前和未来元素。查看这些文章:

另外需要考虑的是一个帮助管理 asp.net mvc 的脚本和 css 的工具。我一直在使用它,我喜欢它,因为它可以组合文件并压缩它们。你也可以从你的网络配置中配置它。

于 2009-06-22T10:59:37.630 回答