asp.net - 传递一个值到下一页

标签 asp.net

我有登录页面,登录后我创建了一个 session 变量来存储用户名。
我已经使用这个变量从包含 AccountID、名称等的 Account 表中检索该用户的信息,并使用标签 (lblAccountID) 在页面上返回 AccountID。

我有一个按钮“添加资金”到这个帐户,它重定向到 AddFunds.aspx 页面

如何将 AccountID 传递到 AddFunds.aspx 页面,该页面将用于将详细信息插入具有 AccountID 的 Funds 表中。

我不希望 AccountID 在 AddFunds.aspx 页面上可见。

最佳答案

有多种方法可以实现这一点。我可以简要地向您解释我们在日常编程生命周期中使用的 4 种类型。

请通过以下几点。

1 查询字符串。

FirstForm.aspx.cs

Response.Redirect(“SecondForm.aspx?Parameter=” + TextBox1.Text);

SecondForm.aspx.cs
TextBox1.Text = Request. QueryString["Parameter"].ToString();

当您传递整数类型的值或其他短参数时,这是最可靠的方法。如果您在通过查询字符串传递值时使用值中的任何特殊字符,则此方法的更多进展,您必须在将值传递给之前对值进行编码下一页。所以我们的代码片段将是这样的:

FirstForm.aspx.cs
Response.Redirect(“SecondForm.aspx?Parameter=” + Server.UrlEncode(TextBox1.Text));

SecondForm.aspx.cs
TextBox1.Text = Server.UrlDecode(Request.QueryString["Parameter"].ToString());

2.通过上下文对象传递值

通过上下文对象传递值是另一种广泛使用的方法。

FirstForm.aspx.cs
TextBox1.Text = this.Context.Items["Parameter"].ToString();

SecondForm.aspx.cs
this.Context.Items["Parameter"] = TextBox1.Text;
Server.Transfer(“SecondForm.aspx”, true);

请注意,我们使用 Server.Transfer 而不是 Response.Redirect 导航到另一个页面。我们中的一些人还使用 Session 对象来传递值。在该方法中,值存储在 Session 对象中,然后在第二页中从 Session 对象中取出。

3. 将表单发布到另一个页面而不是 PostBack

通过将页面发布到另一个表单来传递值的第三种方法。这是一个例子:

FirstForm.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
buttonSubmit.Attributes.Add(“onclick”, “return PostPage();”);
}

我们创建了一个 javascript 函数来发布表单。

SecondForm.aspx.cs
function PostPage()
{
document.Form1.action = “SecondForm.aspx”;
document.Form1.method = “POST”;
document.Form1.submit();
}
TextBox1.Text = Request.Form["TextBox1"].ToString();

在这里,我们将表单发布到另一个页面而不是它本身。使用此方法,您可能会在第二页中获得 View 状态无效或错误。处理这个错误是把 EnableViewStateMac=false
4. 另一种方法是添加控件的PostBackURL 属性进行跨页回发

在 ASP.NET 2.0 中,微软通过为跨页回发添加控件的 PostBackURL 属性解决了这个问题。实现是设置一个控制属性的问题,您就完成了。

FirstForm.aspx.cs
<asp:Button id=buttonPassValue style=”Z-INDEX: 102″ runat=”server” Text=”Button”         PostBackUrl=”~/SecondForm.aspx”></asp:Button>

SecondForm.aspx.cs
TextBox1.Text = Request.Form["TextBox1"].ToString();

在上面的例子中,我们分配了按钮的 PostBackUrl 属性,我们可以确定它将发布到哪个页面而不是它本身。在下一页中,我们可以使用 Request 对象访问上一页的所有控件。

您还可以使用 PreviousPage 类来访问上一页的控件,而不是使用经典的 Request 对象。

SecondForm.aspx
TextBox textBoxTemp = (TextBox) PreviousPage.FindControl(“TextBox1″);
TextBox1.Text = textBoxTemp.Text;

正如您所注意到的,这也是在页面之间传递值的简单而干净的实现。

引用:“How to: Pass Values Between ASP.NET Web Pages

关于asp.net - 传递一个值到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241470/

相关文章:

asp.net - 在另一个网站上重用一个网站的页面的最佳方式是什么?

asp.net - 为什么在使用当前同步上下文启动任务时未设置 ASP.NET HttpContext.Current

asp.net - Web.Api 未在 Post 中反序列化子数组的属性

javascript - 如何在asp.net中的按钮单击OnClientClick上将文本框id传递给JavaScript

asp.net - 添加对已部署 ASP.NET 站点的程序集引用

ASP.NET 成员(member)资格 getuserbyID

jquery - 如何在 ASP.NET 项目中包含 jquery 插件

javascript - AJAX GET 在第一次调用时返回未定义,但在第二次调用时有效

c# - 优化搜索并返回列表

c# - 在 ASP .NET MVC 中更改角色权限