2014-01-30 92 views
0

我对ASP.NET非常陌生,遇到了一个我尚未弄清楚的问题。在我的Default.aspx页面上,我有一个用户可以注册的地方。这只需要字段 - 电子邮件和密码。当提交按钮被点击时,他们将进入Signup.aspx,它显示一个更大的注册表单,其中包含用户名,电子邮件,密码,确认密码等字段。我想自动填充我的电子邮件和密码文本框与用户输入的Default.aspx页面。这可能吗?我正在使用Microsoft Visual Web Developer 2010 Express。基于用户输入的自动填充文本框

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

然后逻辑上我的标题只应该说“基于用户输入”;) – Vince

+0

否。反对意见是将“元数据”添加到您的标题。 –

回答

0

有多种方法可以做到这一点。

  • 一种方法是使用查询字符串导航到喜欢:

    http://example.com/Signup.aspx?email=value1&password=value2

    和Signup.aspx获得价值的Page_Load事件像:

    String email = Request.QueryString["email"];

    String password = Request.QueryString["password"];

    ,并分配给您的文本框控件,如:

    txtEmail.text =email;

    txtPassword=password;

但是发布的密码作为查询字符串明文是不是好的做法。

  • 其他的方法是GET HTTP POST 从源页面信息:
    1. 在源页,包括包含HTML元素(例如输入或文本域)或ASP.NET服务器表单元素控件(如TextBox或DropDownList控件)在提交表单时发布值。
    2. 在目标页面中,阅读Form集合,该集合返回一个名称/值对的字典,每个发布值一对。例如

//

void Page_Load(object sender, EventArgs e) 
{ 
    System.Text.StringBuilder displayValues = 
     new System.Text.StringBuilder(); 
    System.Collections.Specialized.NameValueCollection 
     postedValues = Request.Form; 
    String nextKey; 
    for(int i = 0; i < postedValues.AllKeys.Length; i++) 
    { 
     nextKey = postedValues.AllKeys[i]; 
     if(nextKey.Substring(0, 2) != "__") 
     { 
      displayValues.Append("<br>"); 
      displayValues.Append(nextKey); 
      displayValues.Append(" = "); 
      displayValues.Append(postedValues[i]); 
     } 
    } 
    Label1.Text = displayValues.ToString(); 
} 
  • 最佳 & 最简单我认为是使用会议

    Submitbutton_click事件默认的。ASPX,值保存到会话,如:

    Session["Email"] = txtEmail.text;

    Session["Password"]=txtPassword.text;

Signup.aspxPage_load事件检索值,如:

string email = (string)(Session["Email"]);

string password = (string)(Session["Password"]);

&分配给你的控制/文本框,如:

txtEmail.text =email;

txtPassword=password;

有更多的方式太检索前一页值一样PreviousPage.FindControl("txtEmail"),但我从来不喜欢他们。

+0

我的代码出了什么问题?在我的默认页面上,在submitbutton_click事件处理程序中,我有:Session(“Email”)= TextBoxEmail.Text然后在我的Signup页面中,在onload处理程序中,我有:Dim Email As String = Session(“Email”)/ n NewTextBoxEmail.Text =电子邮件。它不会像我所期望的那样在文本框中显示文本。 – Vince

+0

当我使用调试器,它给了我这个错误:对象引用未设置为对象的实例。 – Vince

+0

您需要将会话中的值转换为其对应的数据类型,并在使用会话之前检查null,例如if(Session [“Email”]!= null &&!string.IsNullOrEmpty((string)Session [“Email”])) {\\做你的事情}' –

相关问题