При попытке вывести роли на странице ListRoles.cshtml с учетной записью администратора в этом проекте выдается исключение System.NullReferenceException: «Ссылка на объект не установлена на экземпляр объекта»....
Я думаю, проблема в обработке запроса, потому что когда я добавляю точки останова в строках, которые возвращают модель в представление, у модели есть свои роли.
Может ли кто-нибудь скажите мне, пожалуйста, как это исправить!
кое-что пробовал, но ничего не помогло.
Вот проект: https://github.com/ bul-bbx/Rent_A_Car
и вот вся ошибка:
NullReferenceException: Object reference not set to an instance of an object.
AspNetCoreGeneratedDocument.Views_Role_Index.get_Model()
AspNetCoreGeneratedDocument.Views_Role_Index.ExecuteAsync() in Index.cshtml
@if (Model.Any())
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, string contentType, Nullable statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|30_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
вот файл Index.cshtml
@page
@using Rent_A_Car_v2.Areas.Identity.Data;
@model List;
@{
ViewBag.Title = "List Role";
Layout = "~/Views/Role/_RoleLayout.cshtml";
}
Roles
Role Name
@if (Model.Any())
{
foreach (var role in Model)
{
@role
Edit |
Delete
}
}
else
{
No roles available.
}
вот RoleController.cs
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.CodeAnalysis.Differencing;
using Microsoft.EntityFrameworkCore;
using Rent_A_Car_v2.Areas.Identity.Data;
namespace Rent_A_Car_v2.Controllers
{
public class RoleController : Controller
{
private readonly RoleManager roleManager;
private readonly UserManager userManager;
private readonly AppDbContext DbContext;
public RoleController(UserManager userManager, RoleManager roleManager, AppDbContext DbContext)
{
this.roleManager = roleManager;
this.userManager = userManager;
this.DbContext = DbContext;
}
[HttpGet]
public IActionResult AddUserToRole()
{
return View();
}
[HttpPost]
public async Task AddUserToRole(string u, string role)
{
User user = await userManager.FindByNameAsync(u);
await userManager.AddToRoleAsync(user, role);
}
[HttpPost]
public async Task AddUserToRole(User u, string role)
{
await userManager.AddToRoleAsync(u, role);
}
public IActionResult Index()
{
var roles = roleManager.Roles;
var a = roles.Select(role => role.Name).ToList();
return View(a);
}
[HttpGet]
public IActionResult CreateRole()
{
return View();
}
[HttpPost]
public async Task CreateRole(Role model)
{
if (ModelState.IsValid)
{
Role Role = new Role
{
Name = model.Name
};
IdentityResult result = await roleManager.CreateAsync(Role);
if (result.Succeeded)
{
RedirectToAction("ListRole", "Role");
}
foreach (IdentityError error in result.Errors)
{
ModelState.AddModelError("", error.Description);
}
}
return View(model);
}
[HttpGet]
public async Task EditRole(string roleId)
{
// Retrieve the role from the database
var role = await roleManager.FindByNameAsync(roleId);
if (role == null)
{
return NotFound(); // Or handle the error as needed
}
// Pass the role to the view for editing
return View(role);
}
// POST: /Role/EditRole/roleId
[HttpPost]
public async Task EditRole(string roleId, Role updatedRole)
{
if (roleId != updatedRole.Name)
{
return BadRequest();
}
// Retrieve the role from the database
var role = await roleManager.FindByNameAsync(roleId);
if (role == null)
{
return NotFound(); // Or handle the error as needed
}
// Update role details
role.Name = updatedRole.Name; // Update other properties as needed
// Update the role in the database
var result = await roleManager.UpdateAsync(role);
if (result.Succeeded)
{
// Role updated successfully
return RedirectToAction("Index", "Home"); // Redirect to a relevant page
}
else
{
// Failed to update role, handle the error
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
return View(updatedRole); // Return to the edit form with error messages
}
}
//[HttpGet]
//public IActionResult DeleteRole()
//{
// return View();
//}
//[HttpPost]
//public async Task DeleteRole(DeleteRoleViewModel model)
//{
// var role = await roleManager.FindByNameAsync(model.ExistingRoleName);
// if (role == null)
// {
// return NotFound();
// }
// var result = await roleManager.DeleteAsync(role);
// if (result.Succeeded)
// {
// return RedirectToAction("ListRole", "Role");
// }
// else
// {
// foreach (var error in result.Errors)
// {
// ModelState.AddModelError(string.Empty, error.Description);
// }
// return View("Error");
// }
//}
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... les-cshtml
У меня проблема с выводом ролей на странице ListRoles.cshtml [дубликат] ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как включить «перейти к определению» на странице CSHTML JavaScript Snippets Code
Anonymous » » в форуме Javascript - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблемы с выводом типа шаблона с помощью аргумента C++ std::function [дубликат]
Anonymous » » в форуме C++ - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Путаница с выводом значений с плавающей запятой с помощью cout [дубликат]
Anonymous » » в форуме C++ - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-