如何 return 在 ASP.NET 中查看空列表
How to return an empty list in View in ASP.NET
我想显示具有指定角色名称的所有用户。我所做的只是在视图中指定一个角色名称。如果此名称存在,则显示所有相关用户(现在可以使用),或者不显示任何内容(此处出现异常)。
这是我在控制器中的代码:
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return View(usersInRole);
}
else
{
return View();
}
}
这是视图中名为 "Worker" 的不存在的角色名称的代码:
@Html.ActionLink("Manage User", "ViewUser", "Home", new { @roleName="Worker"}, new { style = "color:white" })
下面的截图是我指定数据库中存在的"Customer"作为角色名时的结果。如果我指定另一个不存在的名称,结果应该不包含任何用户列表。
我希望我能让你在这里仪式......
您想要 return 一个空列表,您可以通过以下方式实现:
private List<myClass> GetList(){
List<myClass> list = new List<myClass>();
list.Add(new myClass()); // Add your Class
return list; // retunrs a empty List
}
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return View(usersInRole);
}
else
{
return View(new List<Users>());
}
}
假设您正在 returning User
来自 usersInRole
集合的 if
块中的实体实例,您可以将 if
块重组为自动 return 清空 List<User>
集合,如果不满足条件(还添加了 null
检查 FindByName()
方法):
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var usersInRole = new List<User>(); // assign instance before if conditions
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
// change to FirstOrDefault is more recommended
var role = roleManager.FindByName(roleName).Users.FirstOrDefault();
if (role != null)
{
usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
}
}
return View(usersInRole);
}
或者只是 returning else
块中的空列表:
var emptyList = new List<User>();
return View(emptyList);
此外,请确保您使用 @model User
在视图页面中绑定它。
我想显示具有指定角色名称的所有用户。我所做的只是在视图中指定一个角色名称。如果此名称存在,则显示所有相关用户(现在可以使用),或者不显示任何内容(此处出现异常)。 这是我在控制器中的代码:
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return View(usersInRole);
}
else
{
return View();
}
}
这是视图中名为 "Worker" 的不存在的角色名称的代码:
@Html.ActionLink("Manage User", "ViewUser", "Home", new { @roleName="Worker"}, new { style = "color:white" })
下面的截图是我指定数据库中存在的"Customer"作为角色名时的结果。如果我指定另一个不存在的名称,结果应该不包含任何用户列表。
我希望我能让你在这里仪式...... 您想要 return 一个空列表,您可以通过以下方式实现:
private List<myClass> GetList(){
List<myClass> list = new List<myClass>();
list.Add(new myClass()); // Add your Class
return list; // retunrs a empty List
}
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return View(usersInRole);
}
else
{
return View(new List<Users>());
}
}
假设您正在 returning User
来自 usersInRole
集合的 if
块中的实体实例,您可以将 if
块重组为自动 return 清空 List<User>
集合,如果不满足条件(还添加了 null
检查 FindByName()
方法):
public ActionResult ViewUser(string roleName)
{
var UsersContext = new ApplicationDbContext();
var usersInRole = new List<User>(); // assign instance before if conditions
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (roleManager.RoleExists(roleName))
{
// change to FirstOrDefault is more recommended
var role = roleManager.FindByName(roleName).Users.FirstOrDefault();
if (role != null)
{
usersInRole = UsersContext.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
}
}
return View(usersInRole);
}
或者只是 returning else
块中的空列表:
var emptyList = new List<User>();
return View(emptyList);
此外,请确保您使用 @model User
在视图页面中绑定它。