微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我无法使用部分视图将包含已硬编码到代码中的电影生成表格

如何解决我无法使用部分视图将包含已硬编码到代码中的电影生成表格

我正在尝试生成带有标题电影的表,并在下面的行中显示两个电影名称。我想对这个代码进行硬编码,因为我对mvc相当陌生。我有一个电影模型,一个名为moviescontroller的控制器,一个视图以及一个局部视图。当我打开浏览器时,收到以下错误“ CS0103:名称”电影”在当前上下文中不存在 “,我认为这意味着它无法识别我要显示的电影的背景。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebApplication1.Models;

namespace WebApplication1.viewmodels
{
    public class MovieListviewmodel
    {
        //View Model 
        public Movie Movie { get; set; }
        public List<Movie> Movies { get; set; }
    }
}
@model WebApplication1.viewmodels.MovieListviewmodel
@*
    View for Movies
*@
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Movies</h2>

<table id="movies" class="table table-bordered table-hover">
    <thead>
        <tr>
            <th>Movie</th>
        </tr>
        <tr>
            <td>@movie.Name</td>
        </tr>
        <tr>
            <td>@movie.Name</td>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;
using WebApplication1.viewmodels;

namespace WebApplication1.Controllers
{
    public class MoviesController : Controller
    {

        public ActionResult Index()
        {
            //Action result Index 
            var movies = new List<Movie>
            {
                new Movie {Name = "Fast FurIoUs"},new Movie {Name = "Star Wars"}
            };
            var viewmodel = new MovieListviewmodel
            {
                Movies = movies,};
            return View(viewmodel);

        }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class Movie
    {

        //Properties for Movie Model
        public int Id { get; set; }
        public string Name { get; set; }

    }
}

解决方法

这是因为范围内没有名为movie的变量,因此当您尝试使用@movie访问它时,它会失败,因为它不存在。在视图中访问模型的方法是通过视图的Model属性访问模型。这是一个循环播放电影的简单示例:

@foreach (var movie in Model.Movies)
{
    <p>@movie.Name</p>
}

请注意,foreach正在使用Model.Movies访问电影列表。此后,我们现在在范围内有了一个movie变量,可用于访问每个电影的属性。

因此,您的视图变为:

<table id="movies" class="table table-bordered table-hover">
    <thead>
        <tr>
            <th>Movie</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var movie in Model.Movies)
        {
            <tr>
                <td>@movie.Name</td>
            </tr>
        }
    </tbody>
</table>

如下所示:

movies table

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。