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

时间:2017-10-10 19:36:04

标签: c# jquery asp.net-mvc

(编者) 我想模仿“用户角色”的功能。

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

因此,如果用户在下拉列表中选择“Admin”项,则应将其重定向到“_AdminLanding” ..和 如果项目“学生”,重定向到“_StudentLanding”..如果项目“Tutor”,重定向到“_TutorLanding”

我的代码如下:

MODEL:

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”。目前,它被重定向到“LoggedIn”页面,因为我还不想改变它

2 个答案:

答案 0 :(得分:0)

基本上,这就是你想要发生的事情:

  1. 点击按钮(登录),验证用户名和密码。
  2. 如果验证失败,请返回1.否则,请检查下拉列表中选择的当前项目。
  3. 如果下拉列表等于x,并且用户位于角色x下,则将用户重定向到表单x。否则,如果下拉列表等于y,并且用户在角色y下,则将用户重定向到y。等
  4. 希望您能够通过这种方式了解解决方案的流程。

    另外,我建议您应该使用“角色”列或实体来标识用户登录的角色,而不提示下拉列表。根据您所描述的内容,只要用户在您的应用上输入了有效凭据,任何注册用户都可以访问任何特定角色。

答案 1 :(得分:0)

我认为您可能正在寻找的是选择在身份验证后加载哪个视图。当"重定向"?

时,您能否澄清您的预期结果?

Calling another different view from the controller using ASP.NET MVC 4

接受的答案是返回一个新的View或PartialView对象。

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);