1

我想知道即使我必须加载新页面,单击超链接,我如何才能保留文本框的文本。

它始终是一个空字符串。

有人能帮我吗 ?

            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 { }
4

2 回答 2

3

如果您需要保留一些特定于该人的数据,您可以使用会话。这正是您需要的东西。

您可以随时设置它并获取所需的值。

http://msdn.microsoft.com/en-us/library/ms178581.aspx

编辑: 为了满足评论中提出的一些反对意见,如果会话本身还不够,您仍然可以使用不同的方法。使用 javascript 监视文本框,如果它们的值发生更改,请添加一个 cookie(或向现有 cookie 添加一个值,取决于需要)。仍然比对此类功能使用查询字符串更好的方法......至少在我看来。

于 2012-04-23T11:54:20.473 回答
0

编辑

使用

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();">

上面代码的问题是,当您在页面加载时创建忘记密码的 url 时,文本框值为空,并且当通过单击忘记密码链接进行重定向时,它只会获得空值,而不是您在代码中键入的内容......所以为了使它工作,使用上面的javascript进行重定向,或者使用为你做重定向的点击事件....

组织

像这样更改以下行

 if (Request.QueryString["forgotten"].ToString() == "submited")                 {                     
   userEmail = txtForgotten.Text = Request.QueryString["userEmail"].ToString() ;                         
    SendForgottenPassword(userEmail);                
 }

因此,当您单击按钮时,它会从查询字符串中获取 userEmail 的值并在您的文本框中恢复值...这肯定会完成您的任务

或者

您可以使用其他客户端机制(如 cookie)来存储值,而不是在页面上检索它...

如果您想存储值并将其取回,服务器端选项是会话变量也很有帮助.....

于 2012-04-23T11:53:57.820 回答