如何在ASP.NET MVC项目中模拟ScriptManager.RegisterStartupScript()?

4
我正在使用ASP.NET MVC项目和jQuery来处理异步请求。有时,对于异步请求,我需要返回一个初始化的JavaScript代码片段并与HTML代码片段一起执行(我希望此JavaScript在服务器上呈现)。
目前,我正在使用自己的ScriptsHelper类,并使用RegisterStartupScript()方法(将数据添加到HttpContext.Current.Items)。然后,在全局文件global.asax HttpApplication.EndRequest()中,对于异步请求,我将所有注册的脚本附加到输出中(用`
2个回答

1

在我开始使用jquery之前,我在一个项目中遇到了类似的情况,最终不得不使用eval()。我将一个javascript文本片段作为非可见DOM元素的值返回,并将其与插入DOM的其余HTML一起使用。

我在IE6中调试这种动态生成的javascript时遇到了很多麻烦,所以这个解决方案对我来说还算不错,因为我可以检查被eval的DOM元素的值。然而,我一直对使用eval持怀疑态度。

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


0

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

另外,还有一些其他要考虑的事项,例如帮助管理asp.net mvc脚本和CSS的工具。我一直在使用它,因为它可以合并文件并压缩它们。您还可以从Web配置文件中进行所有配置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接