Razor页面 搜索
作者:互联网
1. 添加了按流派或名称搜索电影
Pages/Movies/Index.cshtml.cs 添加代码
using Microsoft.AspNetCore.Mvc.Rendering;(这个是SelectList的引用)
[BindProperty(SupportsGet = true)]
public string SearchString { get; set; }
public SelectList Genres { get; set; }
[BindProperty(SupportsGet = true)]
public string MovieGenre { get; set; }
备注:
SearchString:包含用户在搜索文本框中输入的文本。
[BindProperty]:会绑定名称与属性相同的表单值和查询字符串。 在 HTTP GET 请求中进行绑定需要 [BindProperty(SupportsGet = true)]
。
Genres :包含流派列表。
MovieGenre:包含用户选择的特定流派。例如,“Western”。
OnGetAsync()方法中新增代码 :
// LINQ查询 选择电影
var movies = from m in _context.Movie
select m;
// SearchString不为空 电影查询会修改为根据搜索字符串进行筛选。
if (!string.IsNullOrEmpty(SearchString))
{
// Lambda表达式查询
movies = movies.Where(s => s.Title.Contains(SearchString));
}
验证 : 导航到电影页面,并向 URL 追加一个如 ?searchString=Ghost
的查询字符串.
例 : https://localhost:5001/Movies?searchString=Ghost
查看结果 : 显示结果为筛选过后的电影。
如果向 Index 页面添加了以下路由模板,
Pages/Movies/Index.cshtml 修改代码
@page "{searchString?}"
搜索字符串则可作为 URL 段传递。
例 :https://localhost:5001/Movies/Ghost。
2. 将页面 Pages/Movies/Index.cshtml 修改的代码 @page "{searchString?}" 修改为 @page
Pages/Movies/Index.cshtml 添加代码
<form>
<p>
Title: <input type="text" asp-for="SearchString" />
<input type="submit" value="Filter" />
</p>
</form>
保存更改并测试筛选器。
3. 按流派搜索(微软文档写的是流派,感觉就是类别 )
此处用到了文章刚开始时定义的 “Genres” 和 “MovieGenre”
Pages/Movies/Index.cshtml.cs
OnGetAsync()方法中 添加代码
①. // 此处代码 作用是 获取数据集中 Genre 列不重复的数据 为页面 类别控件 赋值
IQueryable<string> genreQuery = from m in _context.Movie
orderby m.Genre
select m.Genre;
Genres = new SelectList(await genreQuery.Distinct().ToListAsync());
②.// 此处代码 作用是 筛选 指定类别的 电影集合 (Lambda表达式)
if (!string.IsNullOrEmpty(MovieGenre))
{
movies = movies.Where(x => x.Genre == MovieGenre);
}
Pages/Movies/Index.cshtml 添加代码 (添在了之前筛选文本框之前):
例 :
<form>
<p>
<select asp-for="MovieGenre" asp-items="Model.Genres">
<option value="">All</option>
</select>
Title: <input type="text" asp-for="SearchString" />
<input type="submit" value="Filter" />
</p>
</form>
通过按流派(类别)或和电影标题搜索来测试应用。
标签:Index,SearchString,Razor,代码,Movies,搜索,cshtml,Pages,页面 来源: https://www.cnblogs.com/AlbertNicole/p/16381941.html