Доступ к вложенному свойству в ASP.NET 2.1 ApplicationUser - PullRequest
0 голосов
/ 23 ноября 2018

Следующие классы используются для определения ApplicationUser с вложенными объектами с использованием композиции, а также для представления вложенного свойства.

При посещении ~/Views/Type1/Index.cshtml выводится следующая ошибка:

NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

При просмотре свойства в базе данных Type1FK устанавливается в записи пользователя, поэтому я неуверен, почему это не доступно через контроллер / представление.Как правильно установить и получить доступ к вложенному свойству?

AppUser.cs

using Microsoft.AspNetCore.Identity;

namespace MyApp.Models
{
    public class AppUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        [ForeignKey("Type1FK")]
        public Type1 Type1 { get; set; }
    }
}

Type1.cs

namespace MyApp.Models
{
    public class Type1
    {
        public int Type1Id { get; set; }
        public string Property1 { get; set; }
        public AppUser AppUser { get; set; }
    }
}

Type1Controller.cs

using System.Threading.Tasks;
using MyApp.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;

namespace MyApp.Controllers
{
    [Authorize(Roles = "Type1")]
    public class Type1Controller : Controller
    {
        private UserManager<AppUser> userManager;

        public Type1Controller (UserManager<AppUser> _userManager)
        {
            userManager = _userManager;
        }

        [HttpGet]
        public async Task<IActionResult> Index()
        {
            AppUser user = await userManager.GetUserAsync(HttpContext.User);
            ViewBag.name = user.Type1.Name;
            return View("~/Views/Type1/Index.cshtml");
        }
    } 
}

~ / Views / Type1 / Index.cshtml

<div class="container-fluid">
    <h1>@ViewBag.name</h1>
</div>
...