如何修复无法转换类型错误? [英] How can I fix the cannot convert type error?
问题描述
我想创建关于电影的详细信息页面,但出现此错误并且有点卡住了.我收到无法转换类型错误.我确实理解错误,但我不知道如何修复它.
I want to create a details page about a movie, but I´m getting this error and I´m kinda stuck. I'm getting a cant convert type error. I do understand the error, but I dont have any idea of how to fix it.
这是 PAP 实体是数据库实例的索引:
This is the Index the PAP Entities is the Database instance:
public class MoviesController : Controller
{
PAPEntities db = new PAPEntities();
public ActionResult Index()
{
MovieViewModel[] movies = db.MoviesData.Select(movie => new MovieViewModel
{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
}).ToArray();
return View(movies);
}
这是我现在的详细信息类:
And this is my details class for now:
public ActionResult Details(int Id = 1)
{
MovieViewModel MovieVM = db.MoviesData.Find(Id);
return View(MovieVM);
}
我不断收到关于db.MoviesData.Find(Id);"的错误
I keep getting the error on the "db.MoviesData.Find(Id);"
这是 MovieViewModel 代码:
This is the MovieViewModel code:
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; }
}
这是剃刀页面:
@model WebApplication3.Models.MovieViewModel[]
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Movies</h2>
<p>
@Html.ActionLink("Create New", "Create")
<table class="table table-bordered table-responsive table-hover">
<tr>
<th><b>Movie Name </b></th>
<th><b>Movie Category </b></th>
<th><b>Movie Year </b></th>
<th><b>Movie Description </b></th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.MovieID</td>
<td>@item.MovieCategory</td>
<td>@item.MovieYear</td>
<td>@item.MovieDescription</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.MovieID }) |
@Html.ActionLink("Details", "Details", new { id = item.MovieID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.MovieID })
</td>
</tr>
}
</table>
这是错误:
无法将类型WebApplication3.Models.MoviesData"隐式转换为'WebApplication3.Models.MovieViewModel'
Cannot implicitly convert type 'WebApplication3.Models.MoviesData' to 'WebApplication3.Models.MovieViewModel'
MoviesData 是数据库的表
The MoviesData is the database's table
推荐答案
在你的 ActionResult Details
方法中 db.MoviesData.Find(Id)
返回类型为 WebApplication3.Models.MoviesData
但你的变量类型是 MovieViewModel
.这就是您遇到异常的原因.
In your ActionResult Details
method db.MoviesData.Find(Id)
returns object which type is WebApplication3.Models.MoviesData
but your variable type is MovieViewModel
. That's why you are getting exception.
您需要手动投射.所以,你可以这样编码,
You need to cast manually. So, You can code like this,
public ActionResult Details(int Id = 1)
{
MoviesData movie = db.MoviesData.Find(Id);
MovieViewModel MovieVM = new MovieViewModel{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
};
return View(MovieVM);
}
这篇关于如何修复无法转换类型错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!