C# 在视图和控制器之间传递数据
想看看是否有人能就如何解决我目前面临的问题提供一些建议/指点 . 情景就像C# 在视图和控制器之间传递数据,c#,asp.net-mvc,C#,Asp.net Mvc,想看看是否有人能就如何解决我目前面临的问题提供一些建议/指点 . 情景就像 我有一个页面,上面显示执行搜索和显示数据的位置 在A页上有一个ActionLink,它将所选记录的ID传递给B页 在重定向到B页之前,我需要存储/保留A页的表单数据(我不想使用会话或隐藏字段,因为数据非常重要) 一旦用户完成了对B页的操作,我需要保存对B页的更改并重定向回A页 在这里,页面A应该根据步骤3中的保存器表单数据发出Post请求。目的是显示重定向到B页之前存在的反向搜索数据 类似于 View A //
View A
// Search textboxes here
// Search data list here with ActionLink column
View B
// more controls here
// Submit button - saves changes on this page.
// after submit button processing need to go back to View A
// and display the same Search data List based on Seach textboxes values
// those were entered by user before coming to this View B.
// Ques: Not sure how to persist data from View A between calls to View B and then View B to View A.
有没有人有更好的方法来实现这一点
目前我的解决方案是
提前感谢如果您依赖于整版刷新,则需要使用会话。您没有给出不想使用它的原因,但Cache对象完全不适合用于此目的,因为如果服务器需要重新获得一些内存,它可以被清除,并且在用户之间共享。会话是专门为您描述的目的而构建的—在整页刷新之间保留数据 或者,我会将您的站点构建为一个单页应用程序,也就是说,您不需要在导航之间进行完整的页面刷新,而是可以在客户端的javascript对象中存储数据。由于您非常强调数据是关键的,因此会话可能会更安全,因为如果用户不小心离开页面,您的javascript对象将被清除,其中基于服务器的会话对象将在会话生命周期期间保留它
您也可以将数据存储在cookie/本地存储对象(html5)中,但这可能会对您所做的工作造成过度伤害。如果没有真实的上下文,很难理解您在这里想要实现的目标。但是,从您所说的来看,javascript单页应用程序似乎更适合于此,而不是将呈现留给MVC。感谢您提供有关在视图之间存储数据的有用详细信息。如果您对我使用一次点击多个ajax调用(视图A上的ActinLink,视图B上的Submuit按钮)来实现这一目标的方法有什么想法,我也很想知道。还有更好的方法吗?我建议您不要在页面A上使用Html.ActionLink,而是使用Ajax.ActionLink并将新数据加载到重叠的Html元素中,这样您的数据仍然保留在“页面背景”中。您可以将页面B作为模式弹出窗口打开,完成工作,完成后关闭重叠的模式弹出窗口,显示页面a下方。这样做的好处是拥有最好的“UI”体验,因为它不会刷新整个页面。您的页面B也应该使用Ajax.Form而不是Html.Form来确保它不会进行整页刷新。我不能使用模式弹出窗口,因为页面B有很多数据,并且有自己的模式弹出窗口。目前,我一直无法完成按钮提交过程,但我无法调用视图A的Post方法(Post,因为我需要传递搜索文本框数据并执行搜索)。