如何根据用户类型重定向到特定的布局页面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据用户类型重定向到特定的布局页面?相关的知识,希望对你有一定的参考价值。

我有一个登录页面,当用户成功登录时,当前会重定向到默认布局页面。但是,我为不同的用户创建了一个不同的布局页面,我想要做的是能够查看我的数据库并检查用户的类型以及当用户名和密码正确时,qazxs将其定位到特定的布局页面,具体取决于他们的用户类型。我对每种用户类型都有不同的看法。

response.redirect

The different user views under shared folder.
答案

我将扩展MCoder的原始答案。

如果您使用:

public partial class Login : System.Web.UI.Page
{
    SqlCommand cmd = new SqlCommand();
    SqlConnection con = new SqlConnection();
    SqlDataAdapter sda = new SqlDataAdapter();
    DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        con.ConnectionString = "Data Source=CHRIS\SQLEXPRESS;Initial Catalog=FPSDD;Integrated Security=True";
        con.Open();
    }

    protected void BtnLogin_Click(object sender, EventArgs e)
    {
        cmd.CommandText = "SELECT PersonType FROM Person where Username='" + txtUsername.Text + "' and Password='" + txtPassword.Text + "' and PersonType='" + userType.SelectedValue + "'";
        cmd.Connection = con;
        sda.SelectCommand = cmd;
        sda.Fill(ds, "Person");
        if (ds.Tables[0].Rows.Count > 0)
        {
            if (userType.SelectedValue == "Student")
            {
                Response.Redirect(Url.Action(""));
            }
            else if (userType.SelectedValue == "Instructor")
            {
                Response.Redirect("");
            }
            else if (userType.SelectedValue == "Counselor")
            {
                Response.Redirect("");
            }
            else if (userType.SelectedValue == "Parent")
            {
                Response.Redirect("");
            }
            else if (userType.SelectedValue == "Principal")
            {
                Response.Redirect("");
            }
            else if (userType.SelectedValue == "Admin")
            {
                Response.Redirect("");
            }
            else
            {
                cmd.CommandText = "SELECT PersonType FROM Person where Username='" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'";
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                sda.Fill(ds, "Person");

                if (ds.Tables[0].Rows.Count > 0)
                {
                    Label1.Text = "Invalid User Type. Please Try Again!";
                }
                else
                {
                    Label1.Text = "Invalid User Type, Username or Password. Please Try Again!";
                }
            }
        }
    }

您可以将此Redirect方法的重载传递给参数。

当您的用户登录时,返回他/她的用户类型。像这样将它传递给Redirect:

return RedirectToAction("YourMethodName", "YourControllerName");

并且在YourController.YourMethod(paramType paramName)中有一个条件语句。

return RedirectToAction("YourMethodName", "YourControllerName", new { paramName = userType });

如果您有超过2或3种用户类型,则可以使用Switch / Case而不是If / Else。

另一答案

假设这是一个MVC Web应用程序。不要使用if(paramName = x) { return View("CorrectViewName", appropriateViewModel); } else ...

改为使用

response.redirect()

以上是关于如何根据用户类型重定向到特定的布局页面?的主要内容,如果未能解决你的问题,请参考以下文章

如果他没有登录,如何将用户重定向到网站中的特定页面?

如何将特定类别的产品页面重定向到 Woocommerce 中的购物车页面

仅输入域名时如何将其重定向到特定页面?

302 登录重定向后被 IE 删除的 URL 片段

Laravel 5.5登录后重定向到特定路由

如何在laravel中登录后重定向特定页面