Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 如何在登录后重定向到上一页_C#_Asp.net - Fatal编程技术网

C# 如何在登录后重定向到上一页

C# 如何在登录后重定向到上一页,c#,asp.net,C#,Asp.net,在loggin控件中,我在登录后将用户重定向到同一url。在评论控件中,当未注册或未登录的用户尝试发表评论时,我会在登录控件中向他显示重定向hin的消息。现在我需要在登录后再次将他重定向回评论页面,但我遇到了大麻烦 以下是我的代码: login.ascx.cs protected void btnLogin_Click(object sender, EventArgs e) { try { txtPassword.Text = ob

在loggin控件中,我在登录后将用户重定向到同一url。在评论控件中,当未注册或未登录的用户尝试发表评论时,我会在登录控件中向他显示重定向hin的消息。现在我需要在登录后再次将他重定向回评论页面,但我遇到了大麻烦

以下是我的代码:

login.ascx.cs

protected void btnLogin_Click(object sender, EventArgs e)
    {
        try
        {
            txtPassword.Text = obj.Encrypt(txtPassword.Text.Trim(), true);
            MySqlCommand cmd = new MySqlCommand("Select id,username,password From registration where username=@UserName And password= @password ", con);
            cmd.Parameters.AddWithValue("@UserName", txtusername.Text);
            cmd.Parameters.AddWithValue("@password", txtPassword.Text);
            //MySqlDataAdapter da1 = new MySqlDataAdapter("select id,username from registration where username='" + txtusername.Text + "'", con);
            con.Open();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);

            con.Close();

            string message = null;


            if (dt.Rows.Count > 0)
            {
                String t1 = dt.Rows[0]["id"].ToString();
                String username = dt.Rows[0]["username"].ToString();

                Session["UserId"] = t1;
                Session["username"] = username;

                Uri MyUrl = Request.UrlReferrer;
                Console.WriteLine(MyUrl);
                if (MyUrl != null)
                    HttpContext.Current.Request.UrlReferrer.ToString();

                string userName = Session["username"].ToString();
                //pnllogin.Visible = false;
                 message = "Hello " + userName + ", Welcome to our website.";
                 //Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup1('" + message + "');", true);
            }



            else
            {
                 message = "Sorry You cannot login, please provide correct Email and password";

            }
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + message + "');", true);





        }
comment.ascx.cs

受保护的无效BTN注释\u单击(对象发送方,事件参数e) { 尝试 { if(会话[“userid”]!=null) { main AddComment=new main(); string mandir_id=Request.QueryString[“id”]


}

在将未经身份验证的用户实际重定向到登录页面之前,为什么不引入类似于
会话[“returnPath”]=Request.RawUrl;
的内容,然后在用户获得身份验证时:

if (!string.IsNullOrWhiteSpace(Session["returnPath"]))
    Response.Redirect(Session["returnPath"]);

此外,ASP.NET MVC使用了一个
returnUrl
URL参数,而不是一个有会话价值的参数。因此,您的登录URL看起来像:
http://www.example.com/Login?returnUrl=/the-您所在的页面.aspx
。似乎运行得很好。

在将URL重定向到登录之前,为什么不在会话中存储URL?我不明白您的意思。p请给我解释清楚,谢谢。
在评论控制中,当未注册或未登录的用户尝试发表评论时,我会向他显示一条消息,在登录控制中重定向hin。
如果我理解正确,您允许用户访问评论,但在尝试发布时,您会将他们重定向到登录,对吗?是的,我也这样做了,并且完成了工作。谢谢uch.@Dan-o感谢编辑Dan,但他似乎正在创建自己的成员身份。@user3247426不用担心。@nphx:我意识到,我只是提供了一个会话选项的替代选项(url参数)。你的帖子解释了如何实现重定向,所以我刚刚编辑了你的帖子。希望你不介意。@Dan-o啊,现在我知道你试图建议重新实现查询字符串选项,而不是像已经存在一样使用它;)
if (!string.IsNullOrWhiteSpace(Session["returnPath"]))
    Response.Redirect(Session["returnPath"]);