在两个“完全不同”的页面之间传递值

时间:2010-10-06 18:32:23

标签: c# asp.net

要清楚,这两个页面仅在逻辑上相关,换句话说,我的FirstPage.Aspx中的值将值传递给我的SecondPage.Aspx,因此它控制我的SecondPage.Aspx中的控件的组件和某些属性,即SecondPage。 Aspx不是来自FirstPage.Asp的重定向或转移。对不起,我很厌烦阅读所有的答案,但实际上我需要的答案!

考虑firstPage包含一个textBox,它从用户或Web管理员那里获取一个值,以便在SecondPage上设置关于gridView页面大小的首选项,或者在SecondPage上设置标签的Text属性

我想探索我这样做的选择

PS:我被告知要使用数据库来存储第一页的值,然后使用我的Label存储页面,例如我连接到数据库并检索值并将其设置为标签...这是最好的实践让页面连接每次加载设置一些值有时它只是一个像5的int,大多数时候我已经连接到数据库,在gridView或任何数据绑定控件中显示一些表的数据! / p>

修改

对不起,如果我有点粗鲁,它只是打击了我,我主要得到的答案与我读到的完全不是我的情况!...当然,多亏了你们提到的数据库解决方案,我希望我可以为我的特定情况得到一个例子或文章,因为我认为即使它很简单,但它是必不可少的......

6 个答案:

答案 0 :(得分:3)

您可以使用:

  • 会话变量
  • Cookie
  • 数据库值

他们每个人都有自己的利弊

如果您希望在下次访问第2页时存储该值,请使用数据库值。如果没有,请使用会话变量。

数据库值将为您提供持久值,然后您可以在那里存储其他此类用户变量。

会话将提供持久数据,但仅适用于浏览器当前会话。如果会话超时,数据将会丢失。

根据你所说的,我会假设一个数据库值。

答案 1 :(得分:3)

ASP.NET框架提供了几种机制来维护持续跨多个HTTP请求的上下文。您希望通过呼叫访问的数据可以存储在此上下文中。您所要做的就是决定要维护这个上下文多长时间(因为它消耗资源),以及您希望这个上下文可以在多个服务器上使用。

  1. Application State:在应用程序的生命周期内维护,即从ASP.NET首次加载应用程序时,直到因任何原因卸载它。
  2. Session State:ASP.NET能够识别从特定客户端(IP地址)发出的一系列HTTP请求,这些请求在时间上彼此接近,作为会话。它可以创建在此类会话中持续存在的会话上下文,您可以在其中存储会话中的调用可访问的数据。通过将会话状态与数据库或共享内存相关联,可以使会话状态可用across server boundaries
  3. 数据库
  4. Viewstate:您可以使用Viewstate来维护上下文,但请记住,Viewstate是通过网络传输的,用于每个请求/响应。众所周知,如果使用控件,它会变得非常大。
  5. Cookie:再次,在每条请求/响应的电汇上传输。

答案 2 :(得分:2)

你可以使用cookies,会话等但是如果你想传递定义页面整个内容的东西,比如某种类型的ID,你可能只想把它放在QueryString中。 (例如:default.aspx?id = 4)

缺点:每个人都可以读取(或更改)该值,不适用于关键数据

优点:每个人都可以阅读该值,并且该链接可以发送给其他人

答案 3 :(得分:1)

我建议你从这里开始:Get Started with ASP.NET

如果我理解你的问题,那么你希望Cross Page Posting。如果一个页面没有发布到第二个页面,则需要以某种方式保留数据(数据库,会话,xml文件等)。但是,从阅读你的问题,你听起来只是想要跨页面发帖......

答案 4 :(得分:0)

我认为更好的答案是“控制状态”

参考:http://www.asp.net/general/videos/how-do-i-use-control-state-to-persist-information-for-a-custom-web-server-control

但我无法在我的案例中实现这两个不同的页面 例如:Web用户控件放在News.aspx上,将在News.aspx上分配给控件的值的文本框放在myAdmin.aspx页面中!

说实话,我不太了解代码

原来如此!你认为这是最好的解决方案吗?如果是,你认为它可以用于我的情况(两个不同的页面)??

答案 5 :(得分:0)

你的问题很混乱,在我能理解你真正需要的东西之前花了很多时间。由于HTML中没有事件,因此您需要使用JavaScript和某种Web服务(AJAX)。

页面A将值存储在数据库中,而页面B上的JavaScript将不断检查数据库中的新值,获取它们并输出给用户。为此,它需要连接到一些webservice / webmethod,它将从数据库返回到页面的值。可以找到一个很好的例子here

或者,您可以使用

每5秒刷新一次页面
<meta HTTP-EQUIV="Refresh" content="5">

并检查Page_Load服务器事件上的新数据库值。