У меня проблема с выводом ролей на странице ListRoles.cshtml [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 У меня проблема с выводом ролей на странице ListRoles.cshtml [дубликат]

Сообщение Anonymous »

При попытке вывести роли на странице 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»