Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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

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
Jquery 在MVC控制器中构建网格_Jquery_Asp.net Mvc_Asp.net Mvc 4_Jqgrid - Fatal编程技术网

Jquery 在MVC控制器中构建网格

Jquery 在MVC控制器中构建网格,jquery,asp.net-mvc,asp.net-mvc-4,jqgrid,Jquery,Asp.net Mvc,Asp.net Mvc 4,Jqgrid,我有一个图案/设计问题。在asp mvc应用程序的控制器中构建网格是否被认为是不好的做法 例如,jqgrid有服务器端适配器,您可以在其中填充特定模型以构建网格。这包括构造列,包括列选项width、sortindex、exitable等。 我通常将网格的构造视为应该驻留在视图中的表示模板/脚手架。我通常倾向于将网格设置代码保留给视图,只让控制器将数据传递给视图。我是不是想错了 谢谢您的意见。我同意视图应该管理表示问题,而控制器应该处理向客户端发送数据、处理任何业务逻辑、响应视图事件按钮单击等。因

我有一个图案/设计问题。在asp mvc应用程序的控制器中构建网格是否被认为是不好的做法

例如,jqgrid有服务器端适配器,您可以在其中填充特定模型以构建网格。这包括构造列,包括列选项width、sortindex、exitable等。 我通常将网格的构造视为应该驻留在视图中的表示模板/脚手架。我通常倾向于将网格设置代码保留给视图,只让控制器将数据传递给视图。我是不是想错了


谢谢您的意见。

我同意视图应该管理表示问题,而控制器应该处理向客户端发送数据、处理任何业务逻辑、响应视图事件按钮单击等。因此我同意视图应该呈现网格,控制器应该发送数据。

我也同意,控制器应驱动数据,视图应驱动该数据的显示。但是,由于控制器定义了数据的结构,因此在某种程度上,当涉及网格时,它确实会驱动显示的某些方面。理想情况下,我不希望每次更改基础模型时都必须更改视图和控制器,尽管有时您必须这样做。我更喜欢用一个地方来定义模型,控制器可以访问该模型来构造数据,视图可以访问该模型来构建网格。然后将任何自定义显示细节留给视图中的网格定义。

问题是视图需要指定视图中使用的元素的深度。只是一个例子。您可以在视图中使用元素,它在不同的web浏览器中看起来会有些不同。在页面上显示的基本元素可能更复杂。只需尝试使用HTML5,在谷歌Chrome中查看和尝试即可。您将看到内置datepicker的许多元素,这些元素不是通过表示模板在视图中显式呈现的

我的意思是,您可以在视图中使用一些控件,这些控件应该解释为不应该渲染的基本元素。在使用jqGrid的情况下,您应该只在希望使用网格的位置指定一个带有id属性的空元素。您不会在视图中显式租用网格元素。相反,您可以填充/设置基本网格元素的属性。网格将填充与页面上包含的JavaScript代码有关的数据,以及从相应的控制器操作返回的数据,您应该为jqGrid提供这些数据

我同意这样的模式与MVC模型不匹配,但我个人不赞成教条式地遵循某些模型

我在上面描述的模式中看到的唯一真正的设计问题是在定义网格模型的某些部分时存在的限制,这些部分主要是JavaScript代码。在使用动态系统的情况下,将colModel属性与网格数据一起提供可能更有趣。jqGrid没有提供直接的方法来实现这一点,但我发布了一些答案,其中描述了如何实现相应的实现。主要思想包括使用setColProp、showCol、hideCol、setCaption、setLabel、setColWidth和其他内部预处理。它允许编写通用JavaScript代码来显示任何通用网格,并从服务器加载网格的所有属性。我建议您阅读其中提供的一些重要代码片段和


如果需要,可以使用addColumn方法,而不是创建包含许多隐藏列的网格并在其中显示,该方法仍处于测试阶段,但效果足够好,我发布的代码在demos子目录中可以看到相应的示例。

我想我明白你的意思了-你返回了关于数据的一般信息,然后在客户端上使用javascript来解释数据。但是,如果您正在发送有关UI关注点的信息(显示列、列宽度等),那么MMizing UI关注点不就是业务逻辑吗。最大的问题是列的宽度——在我看来,这完全是一个UI问题,不应该与数据一起存在。