代码之家  ›  专栏  ›  技术社区  ›  Francis Shanahan

自定义视图引擎来解决Javascript/PartialView问题?

  •  1
  • Francis Shanahan  · 技术社区  · 16 年前

    局部视图需要 <div id="myGrid"></div> 还有一些剧本:

    <script>
    $(document).ready(function(){
       $('#myGrid').jqGrid( { // config params go here 
       });
    }
    </script>
    

    我们还希望将多个RenderPartial调用的结果合并到一个文件准备好了吗()呼叫。

    最后是Javascript库文件的问题,比如JQuery和JQGrid.js公司理想情况下应该包含在页面底部(就在$.ready块之前),理想情况下只有在页面上使用适当的partialview时才包含。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    这是一个很好的问题,当JQuery第一次发布时,我的团队一直在努力解决这个问题。一位同事编写了一个页面基类,将所有文档就绪调用合并到一个页面基类中,但这完全是浪费时间和客户的钱。

    不需要将$(document).ready()调用组合成一个调用,因为它们都将被调用,按照它们在页面上出现的顺序依次调用。这是由于该方法的多播委托特性造成的,它不会对性能产生显著影响。您可能会发现页面的可维护性稍微好一点,但是jQuery的可维护性很少有问题,因为它的语法非常简洁。

    http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx

    编辑

    就是编写一个脚本,将行为添加到多个元素中。因此,向要包含网格的div中添加一个类,并对每个类调用一个函数:

    <script language="text/javascript">
         $(document).ready(function(){
             $('.myGridClass').each(function(){
                   $(this).jqGrid( { 
                        // config params can be determined from 
                        //attributes added to the div element
                        var url = $(this).attr("data-url");
    
                    });
              });
         }
    </script>
    

    您只需在页面和局部视图中添加一次此脚本,就可以:

       <div class="myGridClass" data-url="http://whatever-url-to-be-used"></div>
    

    注意dataurl属性。这是HTML5语法,将无法通过HTML4验证。它仍然可以在HTML4浏览器中工作。它只在您必须通过html验证程序运行页面时才起作用。我能看见你 already know about HTML5

        2
  •  0
  •   MrBliz    16 年前