Почему я должен ссылаться на мои модели в представлении? - PullRequest
0 голосов
/ 06 апреля 2019

Я не знаю, является ли это вопросом EF Core или Asp.Net Core 2. Мне просто интересно, почему я должен ссылаться на мой каталог Models в представлении для этого примера (HelloNurse).

Я использую .Net Core 2.2. Я также использую Fluent API в отдельных файлах конфигурации. Наконец, я использую два DbContexts. Один для идентификации и EfficacyDbContext для моих данных. Ой. Я также использую Области.

DbContext

namespace Efficacy.Data
{
    public class EfficacyDBContext : DbContext
    {
        public virtual DbSet<Contact> Contact { get; protected set; }
        public virtual DbSet<ContactType> ContactType { get; protected set; }
        public virtual DbSet<HelloNurse> HelloNurse { get; protected set; }

        public EfficacyDBContext(DbContextOptions options) : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.ApplyConfiguration(new ContactEntityTypeConfiguration());
            modelBuilder.ApplyConfiguration(new ContactTypeEntityTypeConfiguration());
        }
    }
}

Модель

namespace Efficacy.Models.Entities
{
    public class HelloNurse
    {

        public int Id { get; set; }

        public string Hello { get; set; }
        public string Nurse { get; set; }
    }
}

Контроллер

namespace Efficacy.Areas.Ops.Controllers
{
    public class HelloNurseController : Controller
    {
        private readonly EfficacyDBContext _db;

        public HelloNurseController(EfficacyDBContext db)
        {
            _db = db;
        }
        public async Task<IActionResult> Index()
        {
            return View(await _db.HelloNurse.ToListAsync());
        }
    }
}

Посмотреть

@using Efficacy.Models.Entities @* <-Why do I have to include this reference?*@
@model IEnumerable<HelloNurse>
@{
    ViewData["Title"] = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Index</h1>

Я просто считаю немного многословным ссылаться на мой каталог Models, когда я уже передаю DbContext представлению. Я что-то упустил?

1 Ответ

0 голосов
/ 06 апреля 2019

Вместо:

@using Efficacy.Models.Entities

@model IEnumerable<HelloNurse>

Просто добавьте полностью определенное пространство имен прямо в объявлении типа:

@model IEnumerable<Efficacy.Models.Entities.HelloNurse>

Представление должно знать "тип" модели, и для этогочтобы это произошло, нам нужно дать ему полностью определенное пространство имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...