Search.cshtmlビューがあります。これは次のようになります。
@model IEnumerable<MVC.Models.Books>
@using (Html.BeginForm())
{
@Html.DropDownList("Categorie", ViewBag.Categorie as SelectList);
@Html.TextBox("Query");
<input type="submit" value="Search" />
}
@if (this.Model.Any())
{
var grid = new WebGrid(Model, rowsPerPage:20);
@grid.GetHtml(mode: WebGridPagerModes.All,
columns: grid.Columns(
grid.Column(columnName: "Number"),
grid.Column(columnName: "Title"),
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.Nummer })),
grid.Column(format: (item) => Html.ActionLink("Details", "Details", new { id = item.Nummer })),
grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.Nummer }))
)
)
}
私のコントローラーには次の方法があります。
public ActionResult Search()
{
ViewBag.Categorie= new SelectList(new[] { "Number", "Title"});
IEnumerable<Books> model = new List<Books>();
return View(model);
}
[HttpPost]
public ActionResult Search(string categorie, string query)
{
ViewBag.Categorie= new SelectList(new[] { "Number", "Title"});
IEnumerable<Books> model;
switch (categorie)
{
case "Number":
int qnumber = Convert.ToInt32(query);
model = _db.Books.Where(b => b.Number == qnumber)
.OrderBy(b => b.Number).ToList();
break;
default:
model = _db.Books.Where(b => b.Title.Contains(query))
.OrderBy(b => b.Title).ToList();
break;
}
return View(model);
}
すべてがほぼ正常に動作します。ただし、列とページングリンクの並べ替えは機能しません。それらの1つをクリックすると、グリッドにデータがない状態でビューが再ロードされます。
この検索ビューでWebGridを機能させる方法はありますか?