0

我在 ASP.NET 3.5 中有两个页面,我需要从第一页但在第二页访问/读取 Web 控件值。第二页显示的是一个链接,没有发布事件或类似的东西。

我想我应该使用 ViewState,但是对于这个任务来说它看起来很复杂,所以请告诉我一个更好的方法来实现这个。

PS 我正在使用 C# 和 Visual Studio 2010

4

3 回答 3

4

如果我理解正确,您有两个 .aspx 页面,并且您希望一个页面与另一个页面共享信息。第一页是否链接到第二页?

我问是因为您可以采取几种方法。您可以将参数添加到第二页链接中的查询字符串中,其中包含您尝试发送的信息。您还可以使用会话来临时存储信息。

例如:

<asp:HyperLink NavigateUrl="www.<yoursite>.com/firstpage.aspx?eggs=1&bacon=yum" Text="Awesome Site" runat="server" />

在第二页中,您将在 Page_Load 的代码隐藏中拥有它

string eggs = Request.QueryString["eggs"];
string bacon = Request.QueryString["bacon"];

现在,您在第二页中获得了第一页中的值。

另一种方法可能是像这样使用 Session :

第一页:

Session["bacon"] = "Yum";

第二页:

string bacon = (string)Session["bacon"];

但是,我建议不要过度使用会话在页面之间传递信息。

于 2012-09-05T02:25:10.403 回答
1

有一种更好的方法是使用 QueryString 杂耍和 Session 值。
您可以只使用在跨页发布期间设置的上一页属性。

使用 asp 链接按钮:

<asp:LinkButton runat="server" id="myLink"
  NavigateUrl="~/Page2.aspx"
  target="_blank" Text="Go to page 2"></asp:LinkButton>

然后在Page2.aspx.cs上:

Page.PreviousPage中获取值,如下所示:

TextBox txtUser = (TextBox)Page.PreviousPage.FindControl("txtUser");
TextBox txtSomeValue = (TextBox)Page.PreviousPage.FindControl("txtSomeValue");

在第二页中根据需要使用这些。

于 2012-09-05T03:40:27.317 回答
1

Quick & “Dirty”:保存要传递的信息的会话变量。

在第一页:

Session["ValueToPassToOtherControl"] = "The value";

在第二页:

var value = Session["ValueToPassToOtherControl"];

优雅:您需要以任何方式管理您的状态(通过一个静态管理器,其功能是存储和检索该信息,但这也是变量)。问题是HTTP 是无状态的。所以你需要通过某种数据的存储和检索来绕过这个限制。

您建议使用ViewState但忘记了,ViewState 是 ASP.NET 网页使用的一种技术,用于在回发期间持久更改 Web 窗体的状态,这不是您的场景中发生的情况。

于 2012-09-05T02:10:20.453 回答