jquery - ASP.NET MVC View 重新渲染其自身的一部分

标签 jquery asp.net-mvc jquery-ui

在我多年的 .NET 编程生涯中,我还没有遇到过像这个这样奇怪的错误。我发现这个问题是因为页面上的某些元素被 jQuery 双重绑定(bind)。经过一些(荒谬的)调试后,我终于发现,一旦 View 完全完成了自身及其所有子部分 View 的渲染,它就会返回到任意但一致的位置并重新渲染自身。

我已经为这个问题绞尽脑汁两天了,但我根本无法让它只渲染一次!

由于缺乏更好的调试思路,我煞费苦心地在整个 HTML 中添加了日志记录跟踪器,这样我就可以确定可能导致此问题的原因。例如,此代码($log 仅记录到控制台):

...
<script type="text/javascript">var x = 0; $log('1');</script>
<div id="new-ad-form">
<script type="text/javascript">x++;$log('1.5', x);</script>
...

将会产生

... <--- this happens before this snippet
1  
1.5 1 
...
10 <--- bottom of my form, after snippet
1.5 2 <--- beginning of part that runs again!
...
9 <--- this happens after this snippet

我已经彻底搜索了我的代码库,但没有任何内容表明它应该重新渲染页面的一部分。我想知道 jQueryUI 是否与它有关,因为 #new-ad-form 是 jQueryUI 对话框的容器。

如果可能是这种情况,这是我的初始化代码:

$('#new-ad-form').dialog({

自动打开:假, 模态:真实, 宽度:470, title: '制作新广告', 位置:['中心',35], 关闭:AdEditor.reset });

最佳答案

正如我在最初的问题中所怀疑的那样,问题出在 jQueryUI 的 dialog() 方法上。页面呈现后,指定为对话框的元素将重新呈现,这意味着该元素中包含或加载的任何 Javascript 都会重新运行。就我而言,我有两个部分 View ,它们有自己的 JS 文件。

我编写了最丑陋的黑客来解决它,但我通过创建一个全局变量并在调用 $(function()) 中的任何内容之前检查它来使其工作。我写那个 hack 的时候有点死了,但是哎呀,现在我们可以发货了!

感谢所有试图提供帮助的人!

关于jquery - ASP.NET MVC View 重新渲染其自身的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604598/

相关文章:

javascript - JQuery 窗口闪烁

c# - 通过存储库将数据库实体映射到域实体 - 静态属性或单独的服务?

javascript - Jquery ajax 调用在每个请求上呈指数增长

jquery-ui - jQuery UI 选项卡对齐并共享带有标题的栏

jquery - 全局设置 jquery mobile 为 mini

c# - HttpStatusCodeResult(401) 返回 "302 Found"

jquery - 新的 ASP.NET MVC 3 应用程序、浏览器注意事项

javascript - 在没有缓存重新验证的情况下重新加载页面

javascript - 在 jquery 中创建一个关联数组

jquery - 想要打印完整的日历