ASP.NEt MVC5--创建下拉列表

时间:2022-02-04 15:47:01

Adding Search by Genre

If you added the HttpPost version of the Index  method, delete it now.

Next, you'll add a feature to let users search for movies by genre. Replace  the Index method with the following code:

现在我们来改写Index方法,

   public ActionResult Index(string movieGenre,string searchString)
{
var GenreLst = new List<string>(); var GenreQry = from d in db.Movies
orderby d.Genre
select d.Genre;
GenreLst.AddRange(GenreQry.Distinct());
//SelectList生成列表
ViewBag.movieGenre = new SelectList(GenreLst); //Linq查询
var movies = from m in db.Movies select m; if (!string.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
if (string.IsNullOrEmpty(movieGenre))
{
movies = movies.Where(x => x.Genre == movieGenre);
}
return View(movies); }
  var GenreQry = from d in db.Movies
orderby d.Genre
select d.Genre;

当执行完这句代码之后,SQL(GenreQry)为:

 SELECT
[Extent1].[Genre] AS [Genre]
FROM [dbo].[Movies] AS [Extent1]
ORDER BY [Extent1].[Genre] ASC

var movies = from m in db.Movies select m;

执行完这句代码之后,SQL(Movies)为:

 SELECT
[Extent1].[ID] AS [ID],
[Extent1].[Title] AS [Title],
[Extent1].[ReleaseDate] AS [ReleaseDate],
[Extent1].[Genre] AS [Genre],
[Extent1].[Price] AS [Price]
FROM [dbo].[Movies] AS [Extent1]

现在先让我们,在Index视图页面中,添加一个实现下拉框的代码吧:

ASP.NEt MVC5--创建下拉列表

In the following code:

@Html.DropDownList("movieGenre", "All")
The parameter "movieGenre" provides the key for the DropDownList helper to find a IEnumerable<SelectListItem > in the  ViewBag. The ViewBag was  populated in the action  method:
这句话的意思是:moviegenre参数,为DropDownList方法,提供了主键,去找到在控制器中定义的Viewbag.movieGenre
The parameter "All" provides the item in the list to be preselected. Had we used the following code:
这句话的意思是:All参数,提供了默认选择项 ASP.NEt MVC5--创建下拉列表 效果图:
ASP.NEt MVC5--创建下拉列表 In this section you created a search action method and view that let users search  by movie title and genre. In the next section, you'll look at how to add a  property to the Movie model and how to add an initializer that will  automatically create a test database. 通过下拉列表,来搜索:
ASP.NEt MVC5--创建下拉列表 通过下拉列表和title输入框搜索:
ASP.NEt MVC5--创建下拉列表