如何将LinQ生成的数据从控制器传递到辅助视图

时间:2018-07-23 11:23:56

标签: asp.net asp.net-mvc entity-framework

我遇到了一个小问题,因为我不确定如何将控制器中生成的数据传递给View。

提交表单后,我有一个View1,其中包含输入字段,字符串进入我的控制器,在那里将它们解析为DateTime,然后使用LINQ从数据库中获取符合条件的数据。而且我想将生成的数据传递给View,以便可以将其写出。

不确定我的逻辑是否正确或者我是否缺少某些东西。

我的表单视图:

@{
ViewBag.Title = "ViewMovies";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Select date range for movies</h2>

@using (Html.BeginForm("ViewMovies", "ViewMovies"))
{
<input type="text" name="dateFrom" />
<input type="text" name="dateTo" />
<input type="submit" />
}

我的控制器:

    private ApplicationDbContext _context;

    public ViewMoviesController()
    {
        _context = new ApplicationDbContext();
    }

   [Authorize]
    public ActionResult ViewMvovies()
    {
        return View();
    }


    [Authorize]
    [HttpPost]
    public ActionResult ViewMovies(string dateFrom, string dateTo)
    {

        DateTime fromDate = DateTime.Parse(string.Format(dateFrom)).Date;
        DateTime toDate = DateTime.Parse(string.Format(dateTo)).Date;


        var movies = _context.Movies.ToList().Where(g => g.DateTime > fromDate && g.DateTime < toDate);

        return View("ViewMovies2");

    }

我的第二次浏览:

@model IEnumerable<movies.Models.Movies>

@{
ViewBag.Title = "ViewMovies2";
}

<h2>Movie list</h2>

<ul class="movies">
@foreach (var movie in Model)
{
    <li>
        <div class="date">
            <div class="month">
                Month @movie.DateTime.ToString("MMM")
            </div>
            <div class="day">
                Day @movie.DateTime.ToString("d ")
            </div>
        </div>
        <div class="details">
            <span class="category">
                Category @movie.Category.Name
            </span>
        </div>
        <div>
            <span class="cost">
                Cost @movie.Cost
            </span>
        </div>
    </li>
}
</ul>

第二个“查看”页面很可能是不正确的,这只是我尝试编写的内容,但没有用。

错误:     对象引用未设置为对象的实例。

在行中: (第二个视图)

@foreach(模型中的可变电影)

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

1 个答案:

答案 0 :(得分:1)

由于错误,您没有将模型传递给视图。

您可以通过该行传递模型。

return View("ViewMovies2" ,movies );