我的目标是在(浏览视图)中显示所有状态为"最近"然而,当加载网站时,不会显示状态为"最近"出现。 试图在动作方法中创建一个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>
答案 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());
}