Как вывести элементы из базы данных? Существует система создания новостей, где я должен выбрать категорию. EditNews.cs
@model News
<div>
<form asp-controller="Panel" asp-action="EditNews" method="post">
<input asp-for="Id" type="hidden" />
<div>
<label>Head</label>
<input asp-for="Head" />
</div>
<div>
<label>Category</label>
<select asp-for="??" asp-items="??"></select>
</div>
<div>
<label>Body</label>
<textarea id="editor" asp-for="Body"></textarea>
</div>
<input type="submit" value="Submit" />
</form>
</div>
News.cs (в моделях)
namespace Project.Models
{
public class News
{
public int Id { get; set; }
public string Head { get; set; } = "";
public string Body { get; set; } = "";
public string Category { set; get; } = "";
}
}
Также у меня есть Category.cs (в моделях тоже таблица dbo.Categories)
namespace Project.Models
{
public class Category
{
public int Id { get; set; }
public string Title { get; set; } = "";
}
}
Я сделал отображение категорий на другой странице с помощью ViewComponent (Components / CategoryShowing.cs)
namespace Project.Components
{
public class CategoryShowing : ViewComponent
{
private readonly Project.Data.AppDbContext _db;
public CategoryShowing(Project.Data.AppDbContext context)
{ _db = context; }
public IViewComponentResult Invoke()
{
var categories = _db.Categories.ToList();
return View(categories);
}
}
}
Представления / Компоненты / CategoryShowing / Default.cs html
@model IEnumerable<Category>
<div>
<ul>
@foreach (var category in Model)
{
<li>
<a asp-controller="Categories" asp-action="Category" asp-route-id="@category.Id">
@Html.Raw(category.Title)
</a>
</li>
}
</ul>
</div>
Подводя итог, я сделал показ категорий на другой странице. Однако мне это нужно в "select asp -for". Как я могу это реализовать? Может быть, это правильный путь
<select asp-for="Id" asp-items="(new SelectList(Model.Category,"Id","Title"))"></select>
Но, какой-то код должен быть написан где-то еще, но я не знаю, где и как.