Мне нужно добавить новую статью в мою БД, но у меня есть некоторые проблемы с категорией поля отношения один ко многим. Я хочу реализовать 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 что. Просьба помочь.