首页 > 解决方案 > 如何将一个项目转换为另一个项目(“无法将类型'Project.Services ...'隐式转换为'Project.MVC ...')

问题描述

这是我的控制器出现错误的地方

`// 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)

同样的错误也出现在 Edit and Delete 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”。存在显式转换(您是否缺少演员表?)

现在,有人可以告诉我如何解决这个问题,因为我找不到解决方案吗?

标签: c#asp.net-mvccasting

解决方案


您不能将父级隐式转换为子级。

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

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

你也可以看看显式的父子转换,但我更喜欢这个。无法从父类转换为子类


推荐阅读