【发布时间】:2024-04-18 05:40:02
【问题描述】:
我试图用SelectListItem 解决问题。作为管理员,我希望能够分配Client 来注册User
public IActionResult Edit(string Id)
{
var user = _db.ApplicationUsers.FirstOrDefault(u => u.Id == Id);
if (user == null)
{
return NotFound();
}
var userRole = _db.UserRoles.ToList();
var roles = _db.Roles.ToList();
var client = _db.Clients.ToList();
var role = userRole.FirstOrDefault(u => u.UserId == user.Id);
if (role != null)
{
user.Role = roles.FirstOrDefault(u => u.Id == role.RoleId).Id;
}
if(client != null)
{
}
user.RoleList = _db.Roles.Select(u => new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
{
Text = u.Name,
Value = u.Id
});
user.ClientList = _db.Clients.Select(u => new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
{
Text = u.Name,
Value = u.Id.ToString()
});
return View(user);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(ApplicationUser user)
{
if (ModelState.IsValid)
{
var objFromDb = _db.ApplicationUsers.FirstOrDefault(u => u.Id == user.Id);
if (objFromDb == null)
{
return NotFound();
}
var userRole = _db.UserRoles.FirstOrDefault(u => u.UserId == objFromDb.Id);
if (userRole != null)
{
var previousRoleName = _db.Roles.Where(u => u.Id == userRole.RoleId).Select(e => e.Name).FirstOrDefault();
await _userManager.RemoveFromRoleAsync(objFromDb, previousRoleName);
}
await _userManager.AddToRoleAsync(objFromDb, _db.Roles.FirstOrDefault(u => u.Id == user.Role).Name);
objFromDb.Name = user.Name;
objFromDb.Email = user.Email;
objFromDb.PhoneNumber = user.PhoneNumber;
objFromDb.StreetAddress = user.StreetAddress;
objFromDb.City = user.City;
objFromDb.PostalCode = user.PostalCode;
objFromDb.RoleList = user.RoleList;
objFromDb.ClientList = user.ClientList;
_db.SaveChanges();
return RedirectToAction(nameof(Index));
}
user.RoleList = _db.Roles.Select(u => new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
{
Text = u.Name,
Value = u.Id
});
user.ClientList = _db.Clients.Select(u => new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
{
Text = u.Name,
Value = u.Id.ToString()
});
return View(user);
}
不知何故一切正常,只是我无法更改ClientList,我尝试调试应用程序,但我看不到任何错误。
如果有人可以检查代码并告诉我哪里出错了,我将非常感激?这段代码有什么问题,为什么我的ClientList不能是Edited
【问题讨论】:
标签: c# sql-server entity-framework asp.net-core-mvc asp.net-identity