我遇到了一个小问题,因为我不确定如何将控制器中生成的数据传递给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:对象引用未设置为对象的实例。
答案 0 :(得分:1)
由于错误,您没有将模型传递给视图。
您可以通过该行传递模型。
return View("ViewMovies2" ,movies );