Как соединить две модели в ASP.NET MVC? - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в ASP.NET MVC и пытаюсь создать приложение, в котором хранятся методы и результаты плавания.

Итак, я создал приложение в Visual Studio 2019, и у меня уже получилосьперечисление, добавление, удаление и изменение результатов плавания. Эти данные хранятся только в одной модели. Но я также хотел бы хранить практики, но одна практика включает в себя множество упражнений / упражнений. Поэтому я предположил, что мне нужны два разных модельных класса для этого.

Итак, я создал эти два класса:

Практический класс:

public class Practice
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public List<Drill> Drills { get; set; }
}

Класс упражнений:

public class Drill
{
    public int Id { get; set; }
    public int? Multiplier { get; set; }
    public int Distance { get; set; }
    public int? RestTime { get; set; }
    public SwimmingStroke SwimmingStroke { get; set; }
    public String Equipment { get; set; }
    public String Notes { get; set; }
}

Плавательный удар - это перечисление, которое толькохранит 4 различных типа плавания.

Итак, я попробовал этот способ, и используя миграции, Entity Framework сгенерировал таблицы базы данных для меня. Он также добавил Practice_Id в таблицу Drill, которая, как я полагаю, является внешним ключом. После этого я создал PracticeController. Исходя из этого, я создал леса «Индекс» и «Детали». В Индексе я могу показать список упражнений, но что более важно, когда я нажимаю на детали, я хотел бы перечислить упражнения этой практики. Вот где я застрял.

Метод индекса прост, как может быть

    public ActionResult Index()
    {
        var practices = dbContext.Practices.ToList();
        return View(practices);
    }

Но в методе деталей я не могу понять, что делать.

Моя цель - показатьсписок упражнений выбранной практики в подробном представлении.

1 Ответ

0 голосов
/ 15 октября 2019

Как уже упоминал Дай, использование моделей сущностей непосредственно в вашем представлении не является хорошей идеей. Это немного усложняет ситуацию, и ваша модель сущности не всегда точно представляет информацию, которую вы хотите, чтобы ваш пользователь увидел.

Я предлагаю создать класс, называемый чем-то по образцу PracticeModel (условно, но назовите его по своему желанию), который содержит список DrillModels. Затем выберите практики и упражнения в этой модели и передайте их на ваше представление.

    public class PracticeModel
    {
        public int Id { get; set; }
        public DateTime Date { get; set; }
        public List<DrillModel> DrillModels { get; set; }

        public PracticeModel()
        {
            DrillModels = new List<DrillModel>();
        }
    }

По вашему мнению, вы можете затем просмотреть список DrillModels на вашем PracticeModel и отобразить их по мере необходимости. Предполагая, что у вас будет несколько тренировочных моделей, создайте частичное представление, отображающее каждую тренировочную модель. Это облегчает работу, и вы можете повторно использовать это частичное представление по всему сайту.

@model PracticeModel

@if (Model != null)
{
    // PracticeModel Details
    @for (int i = 0; i < Model.Drills.Count; i++)
    {
        var drill = Model.Drills[i];
        // DrillModel Details
    }
}
else
{
    //Display Appropriate Html
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...