其他分享
首页 > 其他分享> > Razor页面 搜索

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