ASP。 NET MVC 5:如果用户是管理员,则返回所有用户的列表
Posted
技术标签:
【中文标题】ASP。 NET MVC 5:如果用户是管理员,则返回所有用户的列表【英文标题】:ASP. NET MVC 5: If user is admin, return the list of all the users 【发布时间】:2021-04-24 23:35:37 【问题描述】:我在 ASP.NET MVC 5 中创建了登录和注册页面。注册页面上有一个角色选项,询问用户是管理员还是非管理员。
现在,如果尝试登录的用户是 admin,那么我必须显示数据库中存在的所有用户,但如果用户是 >non-admin 那么我必须在页面上显示“Hi!用户名”。
我在下面附上了我的 AccountController 的代码。
using MyFirstApp.DBModel;
using MyFirstApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyFirstApp.Controllers
public class AccountController : Controller
DEV_Training_DemoEntities objDEV_Training_DemoEntities = new DEV_Training_DemoEntities();
// GET: Account
public ActionResult Index()
return View();
public ActionResult Register()
UserModel objUserModel = new UserModel();
return View(objUserModel);
[HttpPost]
public ActionResult Register(UserModel objUserModel)
if(ModelState.IsValid)
if (!objDEV_Training_DemoEntities.AN_Users.Any(m => m.Username == objUserModel.Username))
AN_Users objUser = new AN_Users();
objUser.Name = objUserModel.Name;
objUser.DOB = objUserModel.DOB;
objUser.Username = objUserModel.Username;
objUser.Password = objUserModel.Password;
objUser.Gender = objUserModel.Gender;
objUser.Role = objUserModel.Role;
objDEV_Training_DemoEntities.AN_Users.Add(objUser);
objDEV_Training_DemoEntities.SaveChanges();
objUserModel.SucessMessage = "You are successfully registered!";
return RedirectToAction("Index", "Home");
else
ModelState.AddModelError("Error", "Username already exists!");
return View();
return View();
public ActionResult Login()
LoginModel objLoginModel = new LoginModel();
return View(objLoginModel);
[HttpPost]
public ActionResult Login(LoginModel objLoginModel)
if(ModelState.IsValid)
if (objDEV_Training_DemoEntities.AN_Users.Where(m => m.Username == objLoginModel.Username && m.Password == objLoginModel.Password).FirstOrDefault() == null)
ModelState.AddModelError("Error", "Invalid Email-ID or Password!");
return View();
else
var curruser = objDEV_Training_DemoEntities.AN_Users.Where(m => m.Username == objLoginModel.Username && m.Password == objLoginModel.Password).FirstOrDefault();
if(curruser.Role)
Session["Username"] = objLoginModel.Username;
return RedirectToAction("Index", "Home");
return View();
public ActionResult Logout()
Session.Abandon();
return RedirectToAction("Index", "Home");
【问题讨论】:
有什么问题?你能显示错误吗? 没有错误,就是不知道怎么执行。 @Abhishek Negi,有更新吗?请检查我的答案是否适合您。 【参考方案1】:当用户为admin时,可以尝试以下方法返回用户列表。
cshtml:
@using WebApplication2.Models
@model Users
@
ViewBag.Title = "Index";
<h2>Index</h2>
@using (Html.BeginForm("Index", "Account", FormMethod.Post))
<span>Enter Your Name:</span> @Html.TextBoxFor(m => m.Name)
<br />
<span>Enter Your Age: </span> @Html.DropDownListFor(m => m.role,
new SelectList(Enum.GetValues(typeof(Role))),
"Select Role")
<br />
<input id="Submit" type="submit" value="submit" />
<hr />
<strong>UserName: </strong> @Html.DisplayFor(m => m.Name)
<br />
<strong>Role: </strong> @Html.DisplayFor(m => m.role)
<br />
<b style="color:red">Userlist: @ViewBag.Message</b>
用户:
public class Users
public string Name get; set;
public Role role get; set;
public enum Role
Admin=1,
NonAdmin=2
控制器:
public class AccountController : Controller
public ActionResult Index()
return View();
[HttpPost]
public ActionResult Index(Users um)
if(um.role==Role.Admin)
var list = GetUserlist();
foreach (var item in list)
ViewBag.Message += item.Name + " | ";
else
string str = string.Format("Hi! 0 of the User",um.Name);
Response.Write("<script language=javascript>alert('" + str + "');</script>");
return View(um);
public List<Users> GetUserlist()
List<Users> users = new List<Users>();
// here is you get data from database
return users;
结果:
【讨论】:
【参考方案2】:if 语句 if user==admin then foreach var user in userlist cw(username) else cw(用户名)
【讨论】:
我知道这一点,但我不知道如何编码,因为这是我的第一个项目。那你能帮我写代码吗?以上是关于ASP。 NET MVC 5:如果用户是管理员,则返回所有用户的列表的主要内容,如果未能解决你的问题,请参考以下文章