将数据从一个 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;
        }
     }
}

将数据从一个 Web 窗体移动到另一个 Web 窗体 ASP.NET C#

与其直接回答您的问题,我想指出您的代码的另一个问题,这可能会阻止它工作。您应该参阅有关PreviousPage属性的文档:http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage%28v=vs.110%29.aspx

不是这样工作的:

  1. 用户访问/学生注册.aspx
  2. 用户做事
  3. 用户在/学生注册上提交表格.aspx
  4. 服务器将用户重定向到/MyProfile.aspx
  5. MyProfile 类知道 PreviousPage = 来自/StudentRegistration 的类.aspx

相反,上面链接的 msdn 参考页中的说明规定 PreviousPage 属性仅适用于此方案:

  1. 用户访问/学生注册.aspx
  2. 用户做一些事情
  3. 用户在/学生注册上提交表格.aspx
  4. 服务器将请求传输到 MyProfile 类
    • 这并不意味着用户的 URL 已更改为/MyProfile.aspx,这意味着服务器将处理当前对/StudentRegister 的请求.aspx就好像它实际上是对/MyProfile 的请求.aspx
  5. 用户最终在/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)。这样,您就不必管理会话状态之类的内容。