Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部分视图和CSS/Javascript_Javascript_Asp.net Mvc_Partial Views_Asp.net Mvc Partialview_Cassette - Fatal编程技术网

部分视图和CSS/Javascript

部分视图和CSS/Javascript,javascript,asp.net-mvc,partial-views,asp.net-mvc-partialview,cassette,Javascript,Asp.net Mvc,Partial Views,Asp.net Mvc Partialview,Cassette,我正试图确定构建应用程序的最佳方式,这样我就不会让大量javascript四处飞溅 我有一个ASP.NET MVC应用程序,它的视图使用Michael Kennedy的方法加载SLLOOOWW局部视图。局部视图本身呈现一个网格(它有自己的CSS/JS文件),以及网格本身基于Javascript的配置(列格式、排序默认值、编辑器配置等) 我的问题是什么是构建和维护所有这些的干净方法?我在这里至少有3种脚本(CSS和/或JS): 加载局部视图的主视图上的JS 数据表的CSS/JSF文件 部分视图中的

我正试图确定构建应用程序的最佳方式,这样我就不会让大量javascript四处飞溅

我有一个ASP.NET MVC应用程序,它的视图使用Michael Kennedy的方法加载SLLOOOWW局部视图。局部视图本身呈现一个网格(它有自己的CSS/JS文件),以及网格本身基于Javascript的配置(列格式、排序默认值、编辑器配置等)

我的问题是什么是构建和维护所有这些的干净方法?我在这里至少有3种脚本(CSS和/或JS):

  • 加载局部视图的主视图上的JS
  • 数据表的CSS/JSF文件
  • 部分视图中的JS在
    $(document).ready()上运行并配置特定网格
  • 我可以(在主视图上)使用Razor的脚本/样式的
    @section
    来控制CSS/JS的呈现位置(上面的第1项)。但是,部分视图不能利用
    @节
    功能,因此部分视图中的任何CSS/JS都会被注入到页面的中间。这对我来说并不是很好,因为渲染的HTML看起来很粗糙,在主视图中间出现了CSS/JS。我知道当CSS/JS都存储在外部文件中时,类似的东西可以帮助处理第2项

    但是关于第3项,我有CSS/JS,这是非常特定于该局部视图的?它可能很小,比如为视图附加click事件处理程序或配置JQuery插件,但这是否意味着我应该将其分离到另一个JS文件中?如果不需要,我不喜欢分离这些东西,特别是每个局部视图的网格配置


    在我的例子中,我有一个包含多个视图的应用程序,这些视图包含网格的部分视图,并且没有一个网格包含相同的一组列,因此每个网格的JS配置不同,它们运行在<代码> $(文档)> Read()//>代码>

    < P>我将考虑根本不使用部分视图,因为你提到的原因。从控制器加载json数据,而不是使用ajax加载部分视图。使用像handlebar.js这样的JavaScript模板在客户端获得剃刀效果。
    干净多了。更小的http负载

    我在使用JQGrid时也遇到过类似的情况。我最终用JavaScript在使用网格的任何视图上创建了wazoo。我的解决方案是将任何繁重的javascript放入外部文件中,并按如下方式命名它们:

    var JqGridHelper = JqGridHelper || {};
    JqGridHelper.SetupGrid = function (gridTable, pager, gridJson, colNameJson, colModelJson, label, rowNum, gridCompleteFunc, columnChooser) {
        gridTable.jqGrid({
            datatype: "local",
            data: gridJson,
            colNames: colNameJson,
            colModel: colModelJson,
            rowNum: rowNum,
            autowidth: true,
            height: '100%',
            pager: pager,
            sortname: 'id',
            viewrecords: true,
            sortorder: "desc",
            caption: label,
            gridComplete: gridCompleteFunc
        });
    
        gridTable.jqGrid('navGrid', pager, { edit: false, add: false, del: false });
        if (columnChooser == true) {
            JqGridHelper.AddColumnChooser(gridTable, pager, function() {
    
            });
        }
    
    };
    
    尽量抽象可重用的DataTable绑定和初始化代码,然后在部分视图上从JavaScript调用抽象的方法


    如果您选择外部javascript文件,请确保在适当的时间加载它们,而不是在初始页面加载时加载它们。

    感谢您的想法-我将研究handlebar.js,您是否有任何资源可以证明使用handlebar.js的ASP.NET MVC web应用程序的概念?另外(为了讨论起见),假设我想坚持使用Razor模板来处理部分视图-什么是组织部分视图内部使用的Javascript的好方法?抱歉,David,我也没有。如果这是一个新项目,您可能需要考虑使用服务器只通过REST API返回裸数据的方法,而不是服务器中的UI。没有服务器页面,根本没有.cshtml。在客户端,静态html页面从服务器获取JSON,并使用模板/客户端MVC(如ember或angular)从数据生成ui。通过这种方式,服务器和客户机之间有了很好的分离,服务器是什么对客户机并不重要,反之亦然。客户端最终可能是非html的,比如本机智能手机应用程序。