如何让下拉列表引导您登录到不同的页面



(已编辑)我想模仿"用户角色"的功能。

登录时,用户将输入他们的用户名和密码,然后,使用同一页面上的下拉列表,选择一个项目(角色),单击"登录"按钮,如果成功,将被定向到特定页面。

因此,如果用户在下拉列表中选择"管理员"项,则应将其重定向到"_AdminLanding"..和如果项目"学生",则重定向到"_StudentLanding"。如果项目"导师",重定向到"_TutorLanding"

我的代码如下:

型:

using System;using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Tutors.Models
{
public class UserAccount
{
    [Key]
    public int UserID { get; set; }
    [Required(ErrorMessage="First name required")]
    public string FirstName { get; set; }
    [Required(ErrorMessage = "Last name required")]
    public string LastName { get; set; }
    [Required(ErrorMessage = "Email required")]
    public string Email { get; set; }
    [Required(ErrorMessage="Username required")]
    public string UserName { get; set; }
    [Required(ErrorMessage = "Password required")]
    [DataType(DataType.Password)]
    public string Password { get; set; }
    [Compare("Password",ErrorMessage="Password required")]
    [DataType(DataType.Password)]
    public string ConfirmPassword { get; set; }
    }

登录部分 -- 控制器

    public ActionResult Login(UserAccount user)
    {
        using (SchoolContext db = new SchoolContext())
        {

            var usr = db.UserAccounts.Single(u => u.UserName == user.UserName
                && u.Password == user.Password);
            if (usr != null)
            {
                Session["UserID"] = usr.UserID.ToString();
                Session["UserName"] = usr.UserName.ToString();
                return RedirectToAction("LoggedIn");
            }
            else
            {
                ModelState.AddModelError("", "Username or Password is incorrect");
            }
        }
        return View();
    }

我想要拥有的用户角色是;导师,行政人员,学生。我希望每个用户被重定向到的页面是即;"_TutorLanding","_AdminLanding","_StudentLanding"。目前,它重定向到"登录"页面,因为我还不想更改它

基本上,这是您希望发生的事情:

  1. 单击按钮(登录)时,验证用户名和密码。
  2. 如果验证失败,请返回到 1。否则,请检查下拉列表中选择的当前项目。
  3. 如果下拉列表等于 x,并且用户在角色 x 下,则将用户重定向到表单 x.否则,如果下拉列表等于 y,并且用户在角色 y 下,则将用户重定向到表单 y。

希望您能以这种方式了解解决方案的流程。

另外,我建议您应该有一个"角色"列或实体来标识登录用户的角色,而无需下拉列表提示。由于根据您所描述的内容,只要用户具有在您的应用程序上输入的有效凭据,任何注册用户都能够访问任何特定角色。

我认为您可能正在寻找的是选择要在身份验证后加载的视图。您能否澄清"重定向"时的预期结果?

使用 MVC 4 从控制器调用另一个不同的视图 ASP.NET

接受的答案是返回一个新的视图或部分视图对象。

return View("NameOfView", Model);

所以在你做授权之后。打开下拉值,根据需要返回视图。

switch(dropdownList1.SelectedValue)
{ 
     case "Tutor": return new View("_TutorLanding",Model);
     case "Admin": return new View("_AdminLanding",Model); 
     default:break;
}

或简写代码。

return new View($"_{dropdownList1.SelectedValue}Landing", Model);

最新更新