Как добавить элемент с отношениями один ко многим - PullRequest
1 голос
/ 02 ноября 2019

Мне нужно добавить новую статью в мою БД, но у меня есть некоторые проблемы с категорией поля отношения один ко многим. Я хочу реализовать SelectList, чтобы выбрать одну категорию и добавить ее Id в столбец CategoryId в моей таблице Articles.

public class Article
{        
    public int Id {get; set; }

    public string Name { get; set; }
    public string ShortDescription { get; set; }
    public string Description { get; set; }
    public byte[] HeroImage { get; set; }        
    public DateTime Date { get; set; }

    public int? CategoryId { get; set; }  //implementing one to many relationship with category
    public Category Category { get; set; }
}


 public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Article> Articles { get; set; }

    public Category()
    {
        Articles = new List<Article>();
    }
}

public class ArticlesView
{
    public IEnumerable<Article> Articles { get; set; }
    public string Name { get; set; }
    public SelectList Categories { get; set; }
    public int CategoryId { get; set; }
    public Category Category { get; set; }

}

Контроллер:

public IActionResult CreateNewArticle()
    {
        ViewBag.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
        return View();
    }
    [HttpPost]
    public async Task<IActionResult> CreateNewArticle(ArticlesView av)
    {
        byte[] imageData = null;


        Article artical = new Article { Name = av.Name, CategoryId = av.CategoryId,
            ShortDescription =av.ShortDescription, Description=av.Description, Date = av.Date };

        db.Add(artical); // adding artical
        await db.SaveChangesAsync();

    }

А вот мое представление:

    @model MyBlog.Models.ArticlesView
@{
    ViewData["Title"] = "CreateNewArticle";
}

<h2>CreateNewArticle</h2>

<form asp-action="CreateNewArticle" asp-controller="home" method="post" enctype="multipart/form-data">

    <div class="form-group">
        <label asp-for="Category" class="control-label">Category</label>
        <select asp-for="Categories" asp-items="@ViewBag.Categories"></select>
    </div>   


    <div class="form-group">
        <input type="submit" value="Send" class="btn btn-default" />
    </div>
</form>

Не обращайте внимания на другие поля. Но это не работает для меня. Это неправильно с добавлением id и idk что. Просьба помочь.

1 Ответ

0 голосов
/ 03 ноября 2019

Я предполагаю, что вы не пытаетесь выбрать несколько значений из selectList.

. То, что вы должны сделать, это просто, вы должны нацелиться на CategoryId.

div class="form-group">
        <label asp-for="Category" class="control-label">Category</label>
        <select asp-for="Categories" asp-items="@ViewBag.Categories"></select>
</div>  

Эти значения asp-for должны быть CategoryId, но вместо этого вы дали Category и Categories.

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