Как создать выпадающий список из базы данных в (Asp.net Core - MVC)? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть 2 модели:

  1. Новости Модель
  2. TypeOfNew Модель

с (отношение один ко многим), каждое (TypeOfNew) имеет одну или несколько новостей.

Новости Модель:

public class News
{
    [Required(ErrorMessage = "ID إجباري.")]
    [Key]
    public int ID { get; set; }

    [Required(ErrorMessage = "الحقل إجباري.")]
    [Display(Name = "عنوان الخبر")]
    public string Title { get; set; }

    [Required(ErrorMessage = "الحقل إجباري.")]
    [Display(Name = "مصدر الخبر")]
    public string Source { get; set; }

    [Required(ErrorMessage = "الحقل إجباري.")]
    [Display(Name = "الوصف")]

    [MaxLength(5000)]
    public string Description { set; get; }

    [Display(Name = "نوع الخبر")]
    public int NewsTypeId { set; get; }
    public TypeOfNew TypeOfNew { set; get; }
}

TypeOfNew Модель:

public class TypeOfNew
{
    [Key]
    public int TypeId { set; get; }
    [Display(Name = " نوع الخبر")]

    public string TypeName { set; get; }
    public ICollection<News> News { get; set; }
}

в Create View (News), я хочу отобразить раскрывающийся список (TypeOfNew). поэтому, когда я публикую (Create View), я хочу сохранить (TypeId) из (TypeOfNew model) в (NewsTypeId) of (News model).

Итак, что мне делать в:

  1. создать действие (получить).
  2. создать действие (сообщение).
  3. Создать вид.

1 Ответ

1 голос
/ 25 апреля 2019

Предположим, что вы установили нижеприведенные таблицы в dbcontext:

public DbSet<News> News { get; set; }
public DbSet<TypeOfNew> TypeOfNews { get; set; }`

Вы можете обратиться к нижеприведенным шагам, чтобы выполнить ваши требования:

1.Создать действие GET

public IActionResult Create()
    {
        ViewData["NewsTypeId"] = new SelectList(_context.TypeOfNews, "TypeId", "TypeName");
        return View();
    }

2.Создать действие POST

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID,Title,Source,Description,NewsTypeId")] News news)
    {
        if (ModelState.IsValid)
        {
            _context.Add(news);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        ViewData["NewsTypeId"] = new SelectList(_context.TypeOfNews, "TypeId", "TypeName", news.NewsTypeId);
        return View(news);
    }

3.Создать представление

@model News

<h1>Create</h1>
<hr />
<div class="row">
<div class="col-md-4">
    <form asp-action="Create">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Title" class="control-label"></label>
            <input asp-for="Title" class="form-control" />
            <span asp-validation-for="Title" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Source" class="control-label"></label>
            <input asp-for="Source" class="form-control" />
            <span asp-validation-for="Source" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Description" class="control-label"></label>
            <input asp-for="Description" class="form-control" />
            <span asp-validation-for="Description" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="NewsTypeId" class="control-label"></label>
            <select asp-for="NewsTypeId" class="form-control" asp-items="@ViewBag.NewsTypeId"></select>
            <span asp-validation-for="NewsTypeId" class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Create" class="btn btn-primary" />
        </div>
    </form>
</div>

Для настройки отношений один ко многим выможет относиться к

https://docs.microsoft.com/en-us/ef/core/modeling/relationships#definition-of-terms

...