代码之家  ›  专栏  ›  技术社区  ›  Jason

ASP.NET MVC视图本身的一部分

  •  2
  • Jason  · 技术社区  · 16 年前

    我已经为这件事揪了两天头发了,我简直不能让它只呈现一次!

    由于没有更好的调试方法,我在整个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

    如果可能是这样,下面是我的初始化代码:

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

    自动打开:错误, 宽度:470, 位置:[“中心”,35], 关闭:AdEditor.reset

    3 回复  |  直到 16 年前
        1
  •  2
  •   Jason    16 年前

    dialog() 方法。在页面呈现之后,作为对话框分配的元素将被重新呈现,这意味着该元素中包含或加载的任何Javascript都将重新运行。在我的例子中,我有两个局部视图,它们有自己的JS文件。

    我写了最难看的黑客来绕过它,但我通过创建一个全局变量并在调用 $(function()) . 我在写那篇文章的时候死了一点,但是见鬼,现在我们可以出货了!

    谢谢你的帮助!

        2
  •  1
  •   Jason Rowe    16 年前

    检查JavaScript以确保没有请求意外地返回到同一控制器。使用Firebug或Fiddler监视HTTP请求。

        3
  •  0
  •   griegs    16 年前

    我可能在这里离开了基地,但是你把你的脚本包装在$(document).ready()内了吗?