我的浏览视图中的foreach循环结果不显示asp.net mvc

时间:2016-09-23 01:01:58

标签: asp.net asp.net-mvc

我的目标是在(浏览视图)中显示所有状态为"最近"然而,当加载网站时,不会显示状态为"最近"出现。 试图在动作方法中创建一个LINQ查询,以生成状态为"最近"的电影列表。

namespace Cinema1.Models
{
    [Bind(Exclude = "MovieId")]
    public class Movie
    {
        public int MovieId { get; set; }
        public int MovieGenreId { get; set; }
        public int MovieStatusId { get; set; }

        public virtual MovieStatus MovieStatus { get; set; }
        public virtual ICollection<MovieGenre> MovieGenre { get; set; }

//电影状态的模型类

namespace Cinema1.Models
{
    public class MovieStatus
    {
        [Key]


        public int MovieStatusId { get; set; }
        public string Status { get; set; }

//存储控制器

            public ActionResult Browse(string q)
            {

                var statusModel = storeDB.Movies
                                    .Include("MovieStatus")
                                    .Where(a => a.Title.Contains(q))
                                    .Take(1);


                return View(statusModel.ToList());





//seed database

         Namespace Cinema1.Models
    {
        public class CinemaInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<CinemaContext>
        {
            protected override void Seed(CinemaContext context)
            {
                CinemaContext storeDB = new CinemaContext();

                context.Movies.Add(new Movie
                {
                    MovieId = 01,
                    Title = "Blair Witch",
                    Rating = 15,
                    MovieStatusId = 2,
                    MovieStatus = new MovieStatus { Status = "Recent" },
                    Cast = "Corbin Reid, Wes Robinson, Valorie Curry",
                    Director = "Adam Wingard",
                    RunningTimeMins = 89,
                    Language = "English",
                    Synopsis = "It’s been 20 years since James’ sister disappeared into the Black Hills Forest.         
                MovieDates.ForEach(s => context.MovieDates.Add(s));
                context.SaveChanges();





//the View for Browse action controller

    @model  IEnumerable<Cinema1.Models.Movie> 

    @{
        ViewBag.Title = "Browse";
    }

    <h2>Movie status</h2>

    <p>
        Select from @Model.Count() Status:
    </p>


       <ul>
            @foreach (var Movies in Model)
            {
                <li>
                    @Movies.Title
                </li>
                <li>@Movies.MovieStatus.Status</li>
            }
        </ul>

1 个答案:

答案 0 :(得分:0)

  

我的目标是在(浏览)所有电影中显示   catagorized /的状态为“recent”。在我的视图中,@ model.count()工作...输出为零。但是,它应该不是一个,因为一部电影最近有一个状态?

在“浏览”操作方法中,您没有获取状态为“最近”的电影的代码。相反,你有代码来获取电影的子集,其中包含你在电影标题中的查询字符串“q”中传递的单词!为什么你希望代码返回状态为“recent”的电影?

如果你想获得状态为“Recent”的电影,你应该有一个where子句来检查它。以下代码应该这样做。

public ActionResult Browse()
{
    var statusModel = storeDB.Movies.Include("MovieStatus")
                                    .Where(g => g.MovieStatus.Name == "Recent");           

    return View(statusModel.ToList());
}

现在,这将为您提供具有“最近”状态的电影。如果您希望基于查询字符串使其成为动态,则可以向此方法添加一个带有状态名称的参数。您可以将默认值设置为“Recent”,这样即使您没有在查询字符串中传递状态名称,默认情况下,它也会将状态参数值用作“最近”

public ActionResult Browse(string status="Recent")
{
    var statusModel = storeDB.Movies.Include("MovieStatus")
                                    .Where(g => g.MovieStatus.Name == status);           

    return View(statusModel.ToList());
}