Как отобразить или показать FK «Имя» или «Название» вместо FK «ID» - PullRequest
0 голосов
/ 11 июня 2019

У меня есть две таблицы, одна таблица "Сувениры", а другая таблица "Категории". Сувенир из таблицы "Сувениры" имеет FK "CategoryID", который связан с таблицей "Категория". Проблема в том, что когда я пытаюсь добавить новый Sovenir в раскрывающемся поле для Sovenir Category, отображается идентификатор категории вместо ее заголовка ...

Есть ли простое решение, чтобы изменить его? Заранее спасибо.

Form Example

Souvenir.cs

using IdentityCore.Models.Product;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace IdentityCore.Models
{
    public class Souvenir
    {
        public Souvenir() : base() { }
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Price { get; set; }
        public string Description { get; set; }
        public string Image { get; set; }

        [Display(Name = "Category")]
        public int CategoryId { get; set; }
        [ForeignKey("CategoryId")]
        public Category Category { get; set; }

    }
}

Category.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace IdentityCore.Models
{
    public class Category
    {
        public Category() : base() { }
        [Key]
        public int Id { get; set; }
        public string Title { get; set; }

        public List<Souvenir> Souvenirs { get; set; }
    }
}

ApplicationDbContext.cs

using System;
using System.Collections.Generic;
using System.Text;
using IdentityCore.Models;
using IdentityCore.Models.Product;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace IdentityCore.Data
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole,string>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public DbSet<Category> Categories { get; set; }
        public DbSet<Souvenir> Souvenirs { get; set; }
        public DbSet<Supplier> Suppliers { get; set; }
    }
}

1 Ответ

0 голосов
/ 11 июня 2019

Составьте список выбора, заполненный из сущности «Категории».

В вашем контроллере получите список категорий из dbcontext, что-то вроде:

using (var db = new ApplicationDbContext())
{
    return db.Categories.ToList().Select(d => new SelectListItem()
    {
        Text = d.Title,
        Value = d.Id.ToString()
    });
}

Теперь у вас есть категории в списке выбора, текст - это заголовок, а значение - это идентификатор. Таким образом, пользователь видит текст и возвращает идентификатор.

В вашей модели добавьте свойство списка выбора:

using System.Web.MVC

public IEnumerable<SelectListItem> CategorySelectList { get; set; }

Затем, по вашему мнению, замените список категорий на DropDownListFor:

@Html.DropDownListFor(model => model.CategoryID, Model.CategorySelectList, new { @class = "form-control" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...