根据用户输入自动填充文本框
Posted
技术标签:
【中文标题】根据用户输入自动填充文本框【英文标题】:autofill textbox based on user input 【发布时间】:2014-01-30 03:51:40 【问题描述】:我对 ASP.NET 非常陌生,遇到了一个我还没有弄清楚的问题。在我的 Default.aspx 页面上,我有一个用户可以注册的地方。这只需要字段 - 电子邮件和密码。当点击提交按钮时,他们会进入 Signup.aspx,它会显示一个更大的注册表单,其中包含用户名、电子邮件、密码、确认密码等字段。我想用那些自动填充我的电子邮件和密码文本框用户输入的 Default.aspx 页面。这可能吗?我正在使用 Microsoft Visual Web Developer 2010 Express。
【问题讨论】:
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 那么逻辑上我的标题应该只写“基于用户输入”;) 没有。反对意见是在您的标题中添加“元数据”。 您可以简单地将查询字符串中的电子邮件和密码传递给注册页面,并在注册页面的页面加载事件中访问它并填写文本框/ 【参考方案1】:有多种方法可以做到这一点。
一种方法是使用 querystring 导航到喜欢:
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;
但在查询字符串中以明文形式发布密码并不是一个好习惯。
另一种方法是从源页面获取 HTTP POST 信息:-
在源页面中,包含一个表单元素,该元素包含 html 元素(例如 input 或 textarea)或 ASP.NET 服务器控件(例如 TextBox 或 DropDownList 控件),它们会在提交表单时发布值。
在目标页面中,读取 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();
最好的和最简单的我认为是使用Session:
在 Default.aspx 的 Submitbutton_click
事件中,将值保存到 Session 中,例如:
Session["Email"] = txtEmail.text;
Session["Password"]=txtPassword.text;
并检索 Signup.aspx
Page_load
事件上的值,例如:
string email = (string)(Session["Email"]);
string password = (string)(Session["Password"]);
并分配给您的控件/文本框,例如:
txtEmail.text =email;
txtPassword=password;
还有更多方法可以从上一页检索值,例如 PreviousPage.FindControl("txtEmail")
,但我从不喜欢它们。
【讨论】:
我的代码出了什么问题?在我的默认页面上,在 submitbutton_click 事件处理程序中,我有: Session("Email") = TextBoxEmail.Text 然后在我的注册页面,在 onload 处理程序中,我有: Dim Email As String = Session("Email") /n NewTextBoxEmail.Text = 电子邮件。它没有像我期望的那样在文本框中显示文本。 当我使用调试器时,它给了我这个错误:对象引用未设置为对象的实例。 您需要将会话中的值转换为其相应的数据类型,并在使用会话之前检查 null,例如if(Session["Email"]!=null && !string.IsNullOrEmpty((string)Session["Email"]))\\Do your stuff
以上是关于根据用户输入自动填充文本框的主要内容,如果未能解决你的问题,请参考以下文章