c# - 如何将一个项目转换为另一个项目(“无法将类型'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”。存在显式转换(您是否缺少演员表?)
现在,有人可以告诉我如何解决这个问题,因为我找不到解决方案吗?
解决方案
您不能将父级隐式转换为子级。
var v = db.VehicleMakes.Find(id); //this is of type VehicleMakes
var newMakeViewModel = new MakeViewModel
{
VehicleMakeName = v.VehicleMakeName,
VehicleMakeAbrv = v.VehicleMakeAbrv
};
你也可以看看显式的父子转换,但我更喜欢这个。无法从父类转换为子类
推荐阅读
- c# - 自定义 RadioButton 框架,里面有文本
- mips - MARS 上的 Mips 汇编语言
- python - 在 Pyspark 中读取和保存图像文件
- sql - PostgreSQL - 如何在条件后连接行值
- java - 为什么 ISO 8583 解包会产生无效值?
- ios - 带有 CFNotificationCenter 强引用的 UIViewController 不会发布
- html - 隐藏链接,除非在小屏幕上
- javascript - xhttp.open 函数没有响应
- css - 垂直对齐顶部不适用于 dt 和 dd 元素
- list - 如何在 Java 中循环赋予队列列表各种名称?