Как преобразовать один проект в другой («Не удается неявно преобразовать тип« Project.Services ... »в« Project. MVC ... ») - PullRequest
0 голосов
/ 20 января 2020

Это место, где я получаю сообщение об ошибке в моем контроллере.

`// GET: MakeViewModels/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        MakeViewModel makeViewModel = db.VehicleMakes.Find(id); 

        if (makeViewModel == null)
        {
            return HttpNotFound();
        }
        return View(makeViewModel);
   }`

Ошибка: .... db.VehicleMakes.Find (id)

Та же ошибка также Редактирование и удаление ActionResult.

Это мой вид Модель в пространстве имен Project. MVC

 public class MakeViewModel: VehicleMake
{

    [Required(ErrorMessage ="Required field")]
    [StringLength(100, MinimumLength =2)]
    [Display(Name ="Name")]
    public new string VehicleMakeName { get; set; }

    [Required(ErrorMessage ="Required data")]
    [DataType(DataType.MultilineText)]
    [Display(Name ="Description")]
    public new string VehicleMakeAbrv { get; set; }
}

Моя модель домена находится в пространстве имен Project.Services, она содержит VehicleMakeID (Key) и весь приведенный выше код.

Ошибка

CS0266 Не удалось неявно преобразовать тип 'Project.Services.VehicleMake' в 'Project. MVC .ViewModels.MakeViewModel'. Существует явное преобразование (вам не хватает приведения?)

Теперь, может кто-нибудь сказать мне, как это исправить, потому что я не могу найти решение?

1 Ответ

0 голосов
/ 21 января 2020

Вы не можете неявно преобразовать родителя в ребенка.

var v = db.VehicleMakes.Find(id); //this is of type VehicleMakes

var newMakeViewModel = new MakeViewModel 
{
  VehicleMakeName = v.VehicleMakeName,
  VehicleMakeAbrv = v.VehicleMakeAbrv 
};

Вы также можете взглянуть на явное приведение родителей к потомкам, но я предпочитаю это. Невозможно привести из родительского класса в дочерний класс

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