Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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
C# 将完整模型从视图传递回控制器_C#_Asp.net Mvc - Fatal编程技术网

C# 将完整模型从视图传递回控制器

C# 将完整模型从视图传递回控制器,c#,asp.net-mvc,C#,Asp.net Mvc,有没有办法将完整的模型从视图传递回控制器(请不要使用JSON)? 我的模型是一个列表。 列表 我希望能够将其传递回控制器、排序,然后将其传递回要显示的视图,这样我就不必返回数据库来获取原始数据 我想在构造函数中将列表作为(类)成员变量将消除来回传递模型的需要,但是我还有其他选项吗?从概念上讲,在为单个请求提供服务的过程中,从控制器到视图的通信是一种方式。控制器决定要渲染的视图,将其传递给模型,并且执行永远不会传递回控制器 您可以从视图中执行子操作,这可能会实现与您所追求的类似的效果,但根据您的问

有没有办法将完整的模型从视图传递回控制器(请不要使用JSON)? 我的模型是一个列表。
列表

我希望能够将其传递回控制器、排序,然后将其传递回要显示的视图,这样我就不必返回数据库来获取原始数据


我想在构造函数中将列表作为(类)成员变量将消除来回传递模型的需要,但是我还有其他选项吗?

从概念上讲,在为单个请求提供服务的过程中,从控制器到视图的通信是一种方式。控制器决定要渲染的视图,将其传递给模型,并且执行永远不会传递回控制器

您可以从视图中执行子操作,这可能会实现与您所追求的类似的效果,但根据您的问题还不清楚

如果您谈论的是在与用户交互过程中发生的通信,那么您可以使用TempData实现类似的功能,其中视图将信息存储在TempData中,供下一个执行的控制器使用


如果您担心的是性能,因为必须重复查询数据源,我强烈建议您考虑如何在服务或数据访问层中缓存此数据,而不是尝试使用视图/控制器交互作为缓存方式。

从概念上讲,在为来自控制器到视图是一种方式。控制器决定要渲染的视图,将其传递给模型,并且执行永远不会传递回控制器

您可以从视图中执行子操作,这可能会实现与您所追求的类似的效果,但根据您的问题还不清楚

如果您谈论的是在与用户交互过程中发生的通信,那么您可以使用TempData实现类似的功能,其中视图将信息存储在TempData中,供下一个执行的控制器使用


如果您担心的是性能,因为必须重复查询数据源,我强烈建议您考虑如何在服务或数据访问层中缓存此数据,而不是尝试使用视图/控制器交互作为缓存方式。

可以使用隐藏字段来完成,如我在此处发布的:,但是如果您不需要查看这些数据,缓存是更好的解决方案。

可以使用隐藏字段,如我在这里发布的:,但如果您不需要查看这些数据,缓存是更好的解决方案。

将所有数据发送回服务器将占用大量带宽。我认为使用JQuery/javascript并直接在客户端对数据进行排序会更简单、更快。 如果必须将数据发送到服务器端,则可以使用XML,但不能确定使用XML是否有任何好处

以下是一些客户端分拣机:
http://www.sendesignz.com/index.php/jquery/76-how-to-sort-items-using-jquery将所有数据发送回服务器将占用大量带宽。我认为使用JQuery/javascript并直接在客户端对数据进行排序会更简单、更快。 如果必须将数据发送到服务器端,则可以使用XML,但不能确定使用XML是否有任何好处

以下是一些客户端分拣机:
http://www.sendesignz.com/index.php/jquery/76-how-to-sort-items-using-jquery

谢谢@James,TempData正是我所需要的。我可以在第一次加载页面时在控制器中设置,如果用户选择排序,数据就在那里。没问题。有几件事需要指出。默认情况下,TempData构建在会话状态上,默认情况下会话状态位于内存中。但是,如果您更改这些默认设置(例如,使用数据库会话状态提供程序),您仍然会访问数据库。此外,如果您坚持使用默认的内存提供程序,则不能保证会话数据在下一个请求中会出现(例如,如果应用程序重新启动,或数据从缓存中弹出),因此您需要编写回退代码以查询数据库,以防万一。谢谢@James,TempData正是我所需要的。我可以在第一次加载页面时在控制器中设置,如果用户选择排序,数据就在那里。没问题。有几件事需要指出。默认情况下,TempData构建在会话状态上,默认情况下会话状态位于内存中。但是,如果您更改这些默认设置(例如,使用数据库会话状态提供程序),您仍然会访问数据库。此外,如果您坚持使用默认的内存提供程序,则不能保证下次请求时会话数据会出现(例如,如果应用程序重新启动,或数据从缓存中弹出),因此您需要编写回退代码以查询数据库,以防万一。谢谢@Bogdan。我尝试在客户端执行此操作时遇到的问题是,当我有数千行时,性能会受到影响。是的,您不能对很多行执行此操作。谢谢@Bogdan。我尝试在客户端执行此操作时遇到的问题是,当我有数千行时,性能会受到影响。是的,您不能对很多行执行此操作。