當排序和分頁和過濾都不夠幫使用者去找到他們想要的結果時,想乙個最好的備選方式是讓使用者輸入(關鍵字)他們想要什麼。
用htmlhelper建立乙個新的from和 文字輸入框,並且借助linq根據使用者輸入的關鍵字在之前過濾過的結果裡查詢。
和前邊的秘方很像,新增乙個根據keyword 搜尋的功能需要更新 book/index view 和 bookcontroller。在view裡新增乙個新的from和textbox 讓使用者輸入keyword。同時也要確保當使用者改變排序規則、過濾、分頁時,關鍵字保持。
下邊的**是對view的更新:
@html.actionlink("
create new
", "
create
")show:
@if (viewbag.currentfilter != ""))}
else
| @if (viewbag.currentfilter != "
newreleases"))
}else
| @if (viewbag.currentfilter != "
comingsoon"))
}else
@using (html.beginform())
@html.partial("
_paging
")@html.actionlink("
title
", "
index
", new
)@html.actionlink("
isbn
", "
index
", new
)summary
@html.actionlink("
author
", "
index
", new
)thumbnail
@html.actionlink("
price
", "
index
", new
)@html.actionlink("
published
", "
index
", new
)@foreach (var item in model)
) |@html.actionlink("
details
","details
", new ) |
@html.actionlink("
delete
","delete
", new )
}@html.partial("
_paging
")最終,bookcontroller 需要被更新,在下邊的例子,index() action 更新
class bookscontroller : controller
viewbag.currentkeyword =
string.isnullorempty(keyword) ? "" : keyword;
#endregion
#region filter switch
#endregion
int maxrecords = 1;
int currentpage = page - 1;
return view(books.topagedlist(currentpage,
maxrecords));}}
}譯者:上邊**是以書名和作者名為搜尋條件的。你也可以自己擴充套件。比如根據isbn:
books = books.where(b =>b.title.toupper().contains(keyword.toupper())
|| b.author.toupper().contains(
keyword.toupper()||b.isbn.toupper().contains(
keyword.toupper()));
當然這樣做的話查詢效率會有問題。我們可以在ui提供乙個dropdownlist 讓使用者去選擇根據什麼條件去搜尋關鍵字。
學習準備3 20個Windows常用快捷鍵
tab 製表符 空4格 windows鍵 shift鍵 組合鍵,有切換功能 ctrl鍵 control鍵,組合鍵 alt鍵 f4 關閉視窗 space鍵 產生空格 enter鍵 換行 確認 numlock 小鍵盤 鍵 移動游標 常用 全選 複製 貼上 撤銷 儲存 關閉視窗 執行 永久刪除.ctrl ...
寫了個MVC 多層的Demo
web 表示層,負責應用程式的表現形式 使用者體驗等。common 公共函式類,字元擷取 驗證使用者輸入資訊等功能。一般被表示層呼叫。bll 處理應用程式的業務邏輯,被表示層呼叫。dalfactory 抽象工廠,用於建立各種資料物件的方法,這裡有配置檔案和反射的運用。model model程式集,存...
原譯 11個高效的VS除錯技巧
介紹 除錯是軟體開發周期中的乙個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。本文總結了十個除錯技巧,當你使用vs的時候可以節省你很多時...