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

时间:2018-03-01 17:18:52

标签: c# asp.net webforms

我有一个登录页面,当用户成功登录时,当前会重定向到默认布局页面。但是,我为不同的用户创建了一个不同的布局页面,我想要做的就是能够查看我的数据库并检查用户的类型,当用户名和密码正确时,response.redirect根据用户的类型将其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!"; } } } } 到特定的布局页面。我对每种用户类型都有不同的看法。

The different user views under shared folder.

AWS_IAM

2 个答案:

答案 0 :(得分:1)

我将扩展MCoder的原始答案。

如果您使用:

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

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

当您的用户登录时,返回他/她的用户类型。 将其传递给Redirect,如下所示:

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

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

if(paramName = x)
{
    return View("CorrectViewName", appropriateViewModel); 
}
else ...

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

答案 1 :(得分:0)

假设这是一个MVC Web应用程序。 请勿使用response.redirect()

改为使用

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