当前位置:编程学习 > asp >>

【译】MVC3 20个秘方-(10)根据关键字搜索

 

问题

当排序和分页和过滤都不够帮用户去找到他们想要的结果时,想一个最好的备选方式是让用户输入(关键字)他们想要什么。

解决方案

用HtmlHelper创建一个新的From和 文本输入框,并且借助LINQ根据用户输入的关键字在之前过滤过的结果里查找。

讨论

和前边的秘方很像,添加一个根据keyword 搜索的功能需要更新Book/Index view 和BookController。在View里添加一个新的from和textbox 让用户输入keyword。同时也要确保当用户改变排序规则、过滤、分页时,关键字保持。

下边的代码是对View的更新:

@model PagedList.IPagedList<MvcApplication.Models.Book>

<h2>@MvcApplication4.Resources.Resource1.BookIndexTitle</h2>

<p>

    @Html.ActionLink("Create New", "Create")

</p>

<p>

    Show:

    @if (ViewBag.CurrentFilter != "")

    {

        @Html.ActionLink("All", "Index", new

   {

       sortOrder = ViewBag.CurrentSortOrder,

       Keyword = ViewBag.CurrentKeyword

   })

    }

    else

    {

        @:All

                }

      |  

    @if (ViewBag.CurrentFilter != "NewReleases")

    {

        @Html.ActionLink("New Releases", "Index", new

   {

       filter = "NewReleases",

       sortOrder = ViewBag.CurrentSortOrder,

       Keyword = ViewBag.CurrentKeyword

   })

    }

    else

    {

        @:New Releases

                }

      |  

    @if (ViewBag.CurrentFilter != "ComingSoon")

    {

        @Html.ActionLink("Coming Soon", "Index", new

   {

       filter = "ComingSoon",

       sortOrder = ViewBag.CurrentSortOrder,

       Keyword = ViewBag.CurrentKeyword

   })

    }

    else

    {

        @:Coming Soon

                }

</p>

@using (Html.BeginForm())

{

    @:Search: @Html.TextBox("Keyword")<input type="submit" value="Search" />

 

}

@Html.Partial("_Paging")

<table>

    <tr>

        <th>

            @Html.ActionLink("Title", "Index", new

       {

           sortOrder = ViewBag.TitleSortParam,

           filter = ViewBag.CurrentFilter,

           Keyword = ViewBag.CurrentKeyword

       })

        </th>

        <th>

            @Html.ActionLink("Isbn", "Index", new

       {

           sortOrder = ViewBag.IsbnSortParam,

           filter = ViewBag.CurrentFilter,

           Keyword = ViewBag.CurrentKeyword

       })

        </th>

        <th>

            Summary

        </th>

        <th>

            @Html.ActionLink("Author", "Index", new

       {

           sortOrder = ViewBag.AuthorSortParam,

           filter = ViewBag.CurrentFilter,

           Keyword = ViewBag.CurrentKeyword

       })

        </th>

        <th>

            Thumbnail

        </th>

        <th>

            @Html.ActionLink("Price", "Index", new

       {

           sortOrder = ViewBag.PriceSortParam,

           filter = ViewBag.CurrentFilter,

           Keyword = ViewBag.CurrentKeyword

       })

        </th>

        <th>

            @Html.ActionLink("Published", "Index", new

{

    sortOrder = ViewBag.PublishedSortParam,

    filter = ViewBag.CurrentFilter,

    Keyword = ViewBag.CurrentKeyword

})

        </th>

        <th>

        </th>

    </tr>

    @foreach (var item in Model)

    {

        <tr>

            <td>

                @Html.DisplayFor(modelItem => item.Title)

            </td>

            <td>

                @Html.DisplayFor(modelItem => item.I

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,