【发布时间】:2015-01-02 18:25:15
【问题描述】:
我们正在 asp.net 中为学校制作一个项目,我们有一个包含我们添加的电影的页面,但现在我们想要一个过滤流派的页面。我们编写的代码不起作用,经过搜索我们仍然没有找到正确的答案。谁能帮我们找到它?
这是控制器代码
public class AllMoviesController : Controller
{
private MovieBankEntities db = new MovieBankEntities();
// GET: AllMovies
public ActionResult Index(int? page, string searchString, string searchByGenre)
{
var movies = db.movies.Include(m => m.genres);
IQueryable<movie> movieByGenre = db.movies;
//Dropdownlist
var allMovies = from m in db.movies
select m;
var allGenres = from g in db.genres
select g;
ViewBag.searchByGenre = new SelectList(allGenres, "genre1", "genre1");
if (!string.IsNullOrEmpty(searchByGenre))
{
allGenres = allGenres.Where(s => s.genre1 == searchByGenre);
}
//Searchbox
if (!String.IsNullOrEmpty(searchString))
{
allMovies = allMovies.Where(s => s.movieTitle.Contains(searchString));
}
return View(allMovies.ToList().ToPagedList(page ?? 1, 12));
}
这是我们的观点:
<div class="positionSearchbox">
<div class="positionDropList">
@using (Html.BeginForm("Index", "AllMovies", FormMethod.Get))
{
<p>
Genre : @Html.DropDownList("searchByGenre", "Select a genre")
<input type="submit" value="Filter" class="btn btn-danger" />
<p>Search Movie</p>
@using (Html.BeginForm(new { @class = "form-search" }))
{
@Html.TextBox("SearchString", "", new
{
style = "background-color: #f9f9f9; font-size: 16px; height: 35px; width: 130px; padding-left:10px; padding-right: 10px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; float:left; margin-top:-35px; margin-left:100px;"
})
@*<div>@Html.TextBox("SearchString") <input class="bntSearch" type="submit" value="Search" /></div>*@
}
</p>
}
</div>
</div>
【问题讨论】:
-
定义“不工作”。它究竟是如何失败的?
-
点击按钮时没有过滤。当我们查看 url 时它正在工作:localhost:59596/AllMovies?searchByGenre=Comedy 但是视图没有做任何事情,点击过滤按钮后显示所有电影