を使用して検索し、フィルタに表示からクエリ文字列を非表示にする方法がある - 濾過I基本的なソートを実現するasp.net MVC
コントローラ
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
var students = from s in db.Students
select s;
if (!String.IsNullOrEmpty(searchString))
{
students = students.Where(s => s.LastName.Contains(searchString)
|| s.FirstMidName.Contains(searchString));
}
switch (sortOrder)
{
case "name_desc":
students = students.OrderByDescending(s => s.LastName);
break;
case "Date":
students = students.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
students = students.OrderByDescending(s => s.EnrollmentDate);
break;
default: // Name ascending
students = students.OrderBy(s => s.LastName);
break;
}
int pageSize = 3;
int pageNumber = (page ?? 1);
return View(students.ToPagedList(pageNumber, pageSize));
}
働いていたものを私が求めていることは同じことを実現する方法はあります画像に示されているようにエンドユーザにクエリパラメータを表示することなく、
ビューモデル - フォームコレクションやルートベースのようなものを使用してこのパラメータを非表示にすることは可能ですか?この例のクエリ文字列のセキュリティに関する問題はありますか? - この例はa私はcontoso大学(マイクロソフトのデモ)を使ってやりたいことをデモしています。このコンテキストでは、クエリ文字列を隠す必要はありませんが、別のコンテキスト(ADO.NETストアドプロシージャを使用)では、
を使用すると、文字列でモデルバインダーを使用して考えがありますか? – maximdumont
これは、スニペットやこれに続くコードが良い点になる場合は、 –
というページがロードされた後で、クエリ文字列の余分な部分をjQuery経由で取り除くことができます。 – user4833581