Я не могу создать представление MVC, способный добавить данные в 2 таблицы - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь создать представление, способное добавлять данные в 2 таблицы (SeriesData и SeasonsNEpisodes).Моя цель - добавить серию в SeriesData, а затем добавить количество сезонов и эпизодов в этом сезоне.

Мне удалось создать представление, способное добавить данные из 1 таблицы, но я также хотел добавитьТаблица SeasonsNEpisodes.

Код для первой таблицы:

public ActionResult Create(SeriesData seriesData)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.SeriesData.Add(seriesData);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                return View(seriesData);
            }
            catch
            {
                return View();
            }

, и это представление (представление создания, поставляемое с mvc):

@model WebApplication3.Models.SeriesData

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Create</h2>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>SeriesData</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.SerieID, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SerieID, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SerieID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.SerieName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SerieName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SerieName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.SerieCategory, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SerieCategory, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SerieCategory, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.SerieDescription, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SerieDescription, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SerieDescription, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.SerieYear, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SerieYear, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SerieYear, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

Я думал о создании гиперссылки на другую страницу и делал это там, но на этот раз я хочу сделать это по-другому.Нужно ли создавать еще одну попытку или что-то в этом роде?

РЕДАКТИРОВАТЬ базы данных:

Series table:
SeriesData (
SeriesID int PK,
SeriesName varchar(50),
SeriesDescription text,
SeriesCategory varchar(50),
SeriesYear varchar(4));

Таблица с сезонами и эпизодами:

SeasonsEpisodes (
SeasonsEpisodesId in PK,
SeriesID int FK,
SerieSeasons int,
SerieEpisodes int)

1 Ответ

2 голосов
/ 03 июня 2019

модель вашего вида SeriesData, но вы хотите, чтобы ваш вид мог иметь несколько моделей, для этого создайте модель представления, подобную: -

public class SeriesDataViewModel
{
    //series data properties

    public List<Season> Seasons { get; set; }
    public List<Episode> Episodes { get; set; }
}

затем внесите следующие изменения в ваше представление: -

@model WebApplication3.Models.SeriesDataViewModel

Также при получении сущности Serie из базы данных вы должны получить Seasons и Episodes вместе с Series

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