我正在实现一个客户数据库,它允许我使用ASP.NET MVC和javascript(jQuery)搜索用户和公司,浏览和编辑他们的详细信息以及许多其他内容.
无论何时发生post或get,我都会通过jQuery.load执行此操作并将PartialView插入DOM.
一些部分视图包括表单.我希望那些也是ajax表单,所以这些partialviews具有document.ready处理程序,将表单转换为ajax表单(通过jquery.form).
一开始我在回调/代码中处理这个问题,将部分视图插入到DOM中.但是,这导致了一个包含大量javascript函数的大脚本,这些函数引用了不同的页面.我通过将脚本插入相应的页面来重构大javascript.
现在代码更加流畅(我的OnXXXPartialView处理程序更少),代码整齐地位于它所属的局部视图中.大多数这些文件只包含3-4行javascript代码,因此开销并不是很重要.
因此,我不仅有效地向文档DOM添加元素,有时我还添加了一段javascript.在实践中,这工作正常,但似乎Firebug无法调试动态加载的脚本.
Firebug问题有一些可行的解决方法,但我想知道我的架构是否真的是这里的罪魁祸首.你把javascript属于部分视图?有没有最好的做法?
如果你在部分视图中经历了包含javascript的麻烦,我会切换到只在你的ajax调用中返回JSON,这样你就可以在客户端上处理它了.虽然,我承认我总是喜欢这种方法.
至于最佳实践,我一直认为在ajax调用中返回生成的html而不是json是不好的,但那只是我(不是敲你,这是个人选择).显然,微软并不认为这是不好的做法,因为他们专门建立了支持它的功能.无论如何,我不会考虑在你的html中包含javascript,而不仅仅是首先发送html.
我很好奇,javascript中有什么?
编辑:具体来说,我赞成做一个ajax调用来获取json,然后使用客户端JS构建那个"局部视图"并将其插入到dom中.而不是进行ajax调用以获取服务器为客户端呈现的html然后插入到dom中.
一些部分视图包括表单.我希望那些也是ajax表单,所以这些partialviews具有document.ready处理程序,将表单转换为ajax表单(通过jquery.form).
我认为您可以在将部分视图插入dom的回调/代码中处理此问题.
编辑:如果它有序,高效,组织良好,适合你,那么我会坚持下去.将所有内容整合到一个局部视图中的想法绝对具有吸引力,因此我不会过于担心违反任何最佳实践.我唯一担心的是JS可能是可重用的,如果你一遍又一遍地插入相同的脚本就是这种情况.但在这种情况下,听起来你有很多分区,所以我坚持使用它,除非你可以概括你的脚本并将它们包含在你的其余JS中.