Я получаю неправильный тип в Edit Controller, что мне делать?

В настоящее время я делаю класс Edit в главном контроллере. Вроде все хорошо, но при сборке программы вылетает ошибка

Это класс Edit в MoviesController:

public ActionResult Edit(int? Id)
    {
        if (Id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                MoviesData moviesData = db.MoviesData.Find(Id);
        if (moviesData == null)
            return HttpNotFound();

        return View(moviesData);
    }

(MoviesData — это экземпляр таблицы базы данных)

Это модель просмотра:

public class MovieViewModel
{
    public int MovieID { get; set; }
    public string MovieName { get; set; }
    public string MovieDescription { get; set; }
    public string MovieCategory { get; set; }
    public string MovieYear { get; set; }
}

Каждый раз, когда я пытаюсь собрать программу, появляется эта ошибка:

'System.Data.Entity.DynamicProxies.MoviesData_4D99853B016ED5E65AF8566A78AEB274D91AD066D99E2B2FA50D6EA0156AAA21', но для этого словаря требуется элемент модели типа 'WebApplication3.Models.MovieViewModel'

Я понимаю, что означает ошибка, но я понятия не имею, как ее изменить.

Вы не возвращаете MovieViewModel в представление. Ты возвращаешься MoviesData. Преобразование moviesData в модель представления

haldo 27.05.2019 16:05

Добро пожаловать в stackoverflow, db.MoviesData.Find(Id); возвращает вам Модель, но return View(moviesData); для этого нужна viewModel, пожалуйста, преобразуйте вашу модель в viewModel

Prasad Telkikar 27.05.2019 16:06

@haldo Как я могу конвертировать данные фильмов?

Diogo Teixeira 27.05.2019 16:10

Привет. Это ваш седьмой основной вопрос о C#/MVC за неделю, который можно решить, изучив ошибку и приложив некоторые усилия, чтобы попытаться понять проблему. Это та же проблема, что и в один из ваших предыдущих вопросов. Я бы посоветовал вам следовать приличному учебнику или книге по ASP.NET MVC и C# и не задавать новый вопрос для каждой проблемы, с которой вы сталкиваетесь, иначе вы очень скоро рискуете быть забаненным за вопрос.

CodeCaster 27.05.2019 16:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно преобразовать DTO в вашу модель представления:

MovieViewModel viewModel = new MovieViewModel()
{
   MovieID = moviesData.MovieID (or maybe only .ID?),
   MovieName = moviesData.MovieName

   etc....

}

return View(viewModel );

Другие вопросы по теме