CRUD filtering/sorting 在 asp.net 中不起作用
CRUD filtering/sorting doesnt work in asp.net
我有这个数据库需要 sort/filter。我当前的代码没有显示任何错误,但它也没有执行任何操作。
ApplicationUsersController.cs
// GET: ApplicationUsers
public ActionResult Index(string sortOrder, string searchString)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.EmailSortParm = sortOrder == "Email" ? "email_desc" : "Email";
var users = from c in db.Users
select c;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(c => c.Name.ToUpper().Contains(searchString.ToUpper())
|| c.Email.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "name_desc":
users = users.OrderByDescending(c => c.Name);
break;
case "Email":
users = users.OrderBy(c => c.Email);
break;
case "email_desc":
users = users.OrderByDescending(c => c.Email);
break;
default:
users = users.OrderBy(c => c.Name);
break;
}
return View(db.Users.ToList());
}
Index.cshtml
@using (Html.BeginForm())
{
<p>
Find by name: @Html.TextBox("SearchString")
<input type="submit" value="Search" />
</p>
}
<table class="table">
<tr>
<th>
@Html.ActionLink("Email", "Index", new { sortOrder = ViewBag.EmailSortParm })
</th>
<th>
@Html.ActionLink("Name", "Index", new { sortOrder = ViewBag.NameSortParm })
</th>
排序和过滤似乎都不起作用。排序时,地址栏变为
/ApplicationUsers?sortOrder=name_desc
但顺序根本没有改变。也许有人可以看出问题出在哪里?
编辑:
难道'c'这个字母写错了'var users = from c in db.Users select c;
'?我怎么才能确定?
您需要将两个参数传递给操作 Index
:
@Html.ActionLink("Email", "Index", new { sortOrder = ViewBag.EmailSortParm, searchString = null })
变化:
return View(db.Users.ToList());
收件人:
return View(users);
:-)
我有这个数据库需要 sort/filter。我当前的代码没有显示任何错误,但它也没有执行任何操作。
ApplicationUsersController.cs
// GET: ApplicationUsers
public ActionResult Index(string sortOrder, string searchString)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.EmailSortParm = sortOrder == "Email" ? "email_desc" : "Email";
var users = from c in db.Users
select c;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(c => c.Name.ToUpper().Contains(searchString.ToUpper())
|| c.Email.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "name_desc":
users = users.OrderByDescending(c => c.Name);
break;
case "Email":
users = users.OrderBy(c => c.Email);
break;
case "email_desc":
users = users.OrderByDescending(c => c.Email);
break;
default:
users = users.OrderBy(c => c.Name);
break;
}
return View(db.Users.ToList());
}
Index.cshtml
@using (Html.BeginForm())
{
<p>
Find by name: @Html.TextBox("SearchString")
<input type="submit" value="Search" />
</p>
}
<table class="table">
<tr>
<th>
@Html.ActionLink("Email", "Index", new { sortOrder = ViewBag.EmailSortParm })
</th>
<th>
@Html.ActionLink("Name", "Index", new { sortOrder = ViewBag.NameSortParm })
</th>
排序和过滤似乎都不起作用。排序时,地址栏变为
/ApplicationUsers?sortOrder=name_desc
但顺序根本没有改变。也许有人可以看出问题出在哪里?
编辑:
难道'c'这个字母写错了'var users = from c in db.Users select c;
'?我怎么才能确定?
您需要将两个参数传递给操作 Index
:
@Html.ActionLink("Email", "Index", new { sortOrder = ViewBag.EmailSortParm, searchString = null })
变化:
return View(db.Users.ToList());
收件人:
return View(users);
:-)