Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过PageLoad()保留文本框的文本;_C#_Asp.net - Fatal编程技术网

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);                
 }