繁体   English   中英

使用ASP.NET中的不同重定向参数重定向到同一页面

[英]Redirecting to the same page with different redirect parameters in ASP.NET

我正在制作的该页面基本上接受用户对日期的请求,并将对该日期进行一些选择查询(但是数据库部分并不重要)。 有一个文本框(txtDate)和一个按钮(setDate)用于重定向到同一页面,其中txtDate中的字符串作为URL中的Date参数。 在PageLoad上,我想获取当前的QueryString [Date]并将其放回到txtDate中(以便用户可以看到选择的日期),但是,每当我将文本框设置为新的文本框时,它都会自动请求旧的QueryString。正在要求。 这让我感到困惑。

这是Page_Load:

    String dateInput = null;
    dateInput = Request.QueryString["Date"];
    txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine

这是单击按钮:

    String s = null;
    s = txtDate.Text.Replace("/", "-");
    if (s == "") //if empty sends the current date
    {
        Response.Redirect("Default.aspx?Date=" + DateTime.Today.ToString("MM-dd-yyyy"));
    }
    else //sends the users date
    {
        Response.Redirect("Default.aspx?Date=" + HttpUtility.UrlEncode(s));
    }

我不知道我的解释是否很好,但是它的工作方式如下:

2016年3月14日当前的Date参数

将新日期放入txtDate:03/16/2016并点击setDate按钮

仅当我将txtDate.Text设置为当前参数(03/16/2016)时,才重定向回3/14/2016,否则它将正确重定向到新的Date参数

自从我尝试WebForms以来已经很长时间了,但是如果我是对的,那么在更新文本框之前,您需要检查它是否是回发。

所以基本上只要把你的

txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine

里面

if (!Request.IsPostback)
{
    txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine
}

总结一下...这里发生的只是您的Page_load事件触发了两次。 第一次浏览您的button_click事件,然后第二次浏览您的重定向。 单击按钮时,您将获取查询参数并将其设置为您的文本框,然后更改查询字符串。 这就是为什么如果删除该行,一切正常的原因。 您需要做的只是检查它是否是回发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM