将数据从一个 Web 窗体移动到另一个 Web 窗体 ASP.NET C#
本文关键字:Web 窗体 移动 ASP NET 另一个 一个 数据 | 更新日期: 2023-09-27 18:31:23
我正在尝试按照YouTube上的教程将StudentRegister上的文本框内容移动到MyProfile表单。但是,当我尝试在代码中引用学生注册页面时,出现找不到类型或命名空间的错误。
在教程中,我可以看到在他们的代码中他们有一个命名空间,但我的网站没有。 谁能告诉我该怎么做才能引用学生注册而不会出错?
我应该声明我有一个网站而不是一个网络应用程序。我发现网站没有默认命名空间。如何在不引用命名空间的情况下访问学生注册?
public partial class MyProfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
StudentRegistration LastPage = (StudentRegistration)Context.Handler;
lblEmail.Text = StudentRegistration.STextBoxEm;
}
}
}
与其直接回答您的问题,我想指出您的代码的另一个问题,这可能会阻止它工作。您应该参阅有关PreviousPage
属性的文档:http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage%28v=vs.110%29.aspx
它不是这样工作的:
- 用户访问/学生注册.aspx
- 用户做事
- 用户在/学生注册上提交表格.aspx
- 服务器将用户重定向到/MyProfile.aspx
- MyProfile 类知道
PreviousPage
= 来自/StudentRegistration 的类.aspx
相反,上面链接的 msdn 参考页中的说明规定 PreviousPage
属性仅适用于此方案:
- 用户访问/学生注册.aspx
- 用户做一些事情
- 用户在/学生注册上提交表格.aspx
- 服务器将请求传输到 MyProfile 类
- 这并不意味着用户的 URL 已更改为/MyProfile.aspx,这意味着服务器将处理当前对/StudentRegister 的请求.aspx就好像它实际上是对/MyProfile 的请求.aspx
- 用户最终在/StudentRegistration 上看到通常为/MyProfile.aspx 的结果.aspx
现在,您的代码可能实际上想要这样,但事实上您有:
if (PreviousPage != null)
{
StudentRegistration LastPage = (StudentRegistration)Context.Handler;
// this should be
// StudentRegistration LastPage = (StudentRegistration)PreviousPage;
}
让我觉得你误解了这个有点误导性的PreviousPage
属性。有关如何在 .NET 中跨多个页面加载保持状态的示例,我建议阅读 SessionState。它的名称有些复杂,但在这种情况下可以执行更多您想要的功能:
http://msdn.microsoft.com/en-us/library/ms178581%28v=vs.100%29.aspx
另一个好处是,您不需要从一个类引用另一个类,因此您可以稍后修复当前的错误。此外,即使您确实解决了潜在的命名空间错误,如果您的代码像我怀疑的那样工作,我之前概述的问题也会导致文本字段的值为空。
您正在将数据从源发送到目标 - 例如学生注册 ->我的个人资料
您可以选择,因为归根结底,它是HTTP。除了"持久性"(会话)和您正在遵循的教程之外,一种"更简单"的方法是使用 ButtonPostBackUrl
.
这意味着您正在将数据POST
到目标页面。目标页面(我的个人资料)必须验证和解析发布的数据(Request.Form
)。这样,您就不必管理会话状态之类的内容。