Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复无法转换类型错误?_C#_Sql Server_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何修复无法转换类型错误?

C# 如何修复无法转换类型错误?,c#,sql-server,asp.net-mvc,razor,C#,Sql Server,Asp.net Mvc,Razor,我想创建一个关于电影的详细信息页面,但我遇到了这个错误,我有点卡住了。我收到一个无法转换类型错误。我确实理解这个错误,但我不知道如何修复它 这是PAP实体作为数据库实例的索引: public class MoviesController : Controller { PAPEntities db = new PAPEntities(); public ActionResult Index() { MovieViewModel[] movies =

我想创建一个关于电影的详细信息页面,但我遇到了这个错误,我有点卡住了。我收到一个无法转换类型错误。我确实理解这个错误,但我不知道如何修复它

这是PAP实体作为数据库实例的索引:

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);

    }
这是我目前的详细信息课程:

public ActionResult Details(int Id = 1)
    {
        MovieViewModel MovieVM = db.MoviesData.Find(Id);
        return View(MovieVM);
    }
我一直收到“db.MoviesData.Find(Id);”上的错误

这是MovieViewModel代码:

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")
@model WebApplication3.Models.MovieViewModel[]
@{
ViewBag.Title=“Index”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
影视

@ActionLink(“新建”、“创建”)


电影名称
电影类别
电影年
电影描述
@foreach(模型中的var项目)
{
@项目.MovieID
@项目.电影类别
@项目.电影年
@项目.电影说明
@ActionLink(“编辑”,“编辑”,新的{id=item.MovieID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.MovieID})|
@ActionLink(“删除”,“删除”,新的{id=item.MovieID})
}
这就是错误:

无法将类型“WebApplication3.Models.MoviesData”隐式转换为 “WebApplication3.Models.MovieViewModel”

MoviesData是数据库的表

您应该将DB(
MoviesData
)模型映射到业务模型(
MovieViewModel


在您的
ActionResult Details
方法
db.MoviesData.Find(Id)
中,返回类型为
WebApplication3.Models.MoviesData
的对象,但变量类型为
MovieViewModel
。这就是为什么你会有例外

您需要手动强制转换。所以,你可以这样编码

public ActionResult详细信息(int Id=1)
{
MoviesData movie=db.MoviesData.Find(Id);
MovieViewModel MovieVM=新的MovieViewModel{
MovieID=movie.MovieID,
MovieName=movie.MovieName,
MovieDescription=movie.MovieDescription,
MovieCategory=movie.MovieCategory,
MovieYear=movie.MovieYear
};
返回视图(MovieVM);
}

请给我们看剃须刀页面。在
索引()
中,您可以
新建电影视图模型{…}
。你还需要在
Details()
@CodeNotFound中这样做。我用剃刀回答了自己page@DiogoTeixeira你应该删除。我在问题中添加了razor wiew:)我试过了,出现了错误:“名称“movie”不出现在当前上下文中”。我需要改变什么吗?
<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>
   public ActionResult Details(int Id = 1)
    {
        MoviesData movie = db.MoviesData.Find(Id);
        MovieViewModel MovieVM = new MovieViewModel();
        MovieVM.MovieID = movie.MovieID;
        MovieVM.MovieName = movie.MovieName;
        MovieVM.MovieDescription = movie.MovieDescription;
        MovieVM.MovieCategory = movie.MovieCategory;
        MovieVM.MovieYear = movie.MovieYear;

        return View(MovieVM);
    }