C# 通过PageLoad()保留文本框的文本;
我想知道,即使我必须通过点击超链接来加载新页面,我如何保持文本框的文本 它总是一个空字符串 有人能帮我吗C# 通过PageLoad()保留文本框的文本;,c#,asp.net,C#,Asp.net,我想知道,即使我必须通过点击超链接来加载新页面,我如何保持文本框的文本 它总是一个空字符串 有人能帮我吗 lkForgotten.NavigateUrl = string.Format("Logon.aspx?forgotten={0}", ""); lkSend.NavigateUrl = string.Format("Logon.aspx?forgotten={0}&userEmail={1}", "submited", txtForg
lkForgotten.NavigateUrl = string.Format("Logon.aspx?forgotten={0}", "");
lkSend.NavigateUrl = string.Format("Logon.aspx?forgotten={0}&userEmail={1}", "submited", txtForgotten.Text);
try
{
if (Request.QueryString["forgotten"].ToString() == "")
{
txtForgotten.Visible = true;
lkSend.Visible = true;
}
if (Request.QueryString["forgotten"].ToString() == "submited")
{
userEmail = txtForgotten.Text;
SendForgottenPassword(userEmail);
}
}
catch { }
编辑
使用
Javascript代码
function redirect()
{
var val = document.getElementById('<%= txtForgotten.ClientID %>').value;
location.href='Logon.aspx?forgotten=submitted&userEmail=' + val ;
}
<input type="button" VALUE="Visit Microsoft" OnClick="redirect();">
因此,当您单击按钮时,它会从查询字符串中获取userEmail的值,并在您的文本框中还原值……这肯定会完成您的任务
或
您可以使用其他客户端mecanisam(如cookies)来存储值,然后将其返回到页面上
如果要存储值并将其检索回来,服务器端选项是session variable。如果需要保留特定于此人的某些数据,可以使用session。这正是你需要的东西 您可以随时设置它并获得所需的值 编辑:
为了满足评论中提出的一些异议,如果会话本身还不够,您仍然可以使用不同的方法。使用javascript监控文本框,如果它们的值发生更改,则添加cookie(或根据需要向现有cookie添加值)。对于这种类型的功能,仍然比使用querystring更好的方法。。。至少在我看来。HTML和web应用程序是无状态的,不能保存页面上的数据,除非您使用Cookie或Session.javascript解决方案对您有效吗?@Emged-当您从javascript而不是从服务器端回发时,请执行回发操作…我正在编辑我的代码,我应该使用此javascript吗?@Emged-将我的代码粘贴在上面,您可以检查我,您可能需要修改页面路径,使其直接返回properpalaceI希望看到您管理跨多个页面的此类URL的机制。为此使用URL可能是一个很好的一次性解决方案,但如果你想的内容至少要宽泛一点,那就太糟糕了。@walther-是的答案只与小范围的内容有关……但我想用服务器端客户端创建一个链接按钮,并在点击事件中编写重新识别代码。1:在你创建服务器端点击事件之前,会话不会有帮助,因为当按下链接按钮会重定向到页面,而不是获取文本框的值,所以在这里不起作用…阅读我的答案为什么不起作用…@PranayRana,好吧,这取决于情况。不管怎样,在我看来,在这种情况下使用querystring都是非常糟糕的。为什么?因为如果你有20个文本框(这仍然是一个很低的数量),你想保留所有的值,你会得到一个非常丑陋的url。不谈这种情况,你有多个锚链接,并希望为整个网站相同的功能。做一件非常糟糕的事。你必须管理每个链接的URL,这真的很糟糕。谢谢你的建议。。。
if (Request.QueryString["forgotten"].ToString() == "submited") {
userEmail = txtForgotten.Text = Request.QueryString["userEmail"].ToString() ;
SendForgottenPassword(userEmail);
}