[HttpGet]
public JsonResult EfficientPaging(int? page = null, string searchParam = null)
{
int skip = page.HasValue ? page.Value - 1 : 0;
_users = db.Users.Select(u => u).ToList();
var data = _users.Skip(skip * 10).Take(10).ToList();
var empty = _users.Any();
var count = Convert.ToInt32(Math.Ceiling(_users.Count() / 10.0));
if (!string.IsNullOrEmpty(searchParam))
{
empty = !_users.Any(u => u.last_name.ToLower().Contains(searchParam.ToLower()));
count = _users.Count(u => u.last_name.ToLower().Contains(searchParam.ToLower()));
data =
_users.Where(u => u.last_name.ToLower().Contains(searchParam.ToLower()))
.Skip(skip * 10)
.Take(10)
.ToList();
}
var grid = new WebGrid(data);
var htmlString = grid.GetHtml(tableStyle: "webGrid",
headerStyle: "header",
alternatingRowStyle: "alt",
htmlAttributes: new {id = "DataTable"},
columns: grid.Columns(
grid.Column("first_name", "First"),
grid.Column("last_name", "Last"),
grid.Column("username", "Username"),
grid.Column("password_expiration", "Expired"),
grid.Column("locked", "Locked"),
grid.Column(format: (item) => Html.Actionlink("Edit", "Edit", "User", new { userId = item.id }, null))));
return Json(new
{
Data = htmlString.ToHtmlString(),
Count = count,
Empty = empty
}, JsonRequestBehavior.AllowGet);
}
查询:
$(document).ready(function () {
$('input').keyup(function () {
var name = $(this).attr("name");
var searchParameter = $(this).val();
var element = $(this);
$.ajax({
type: "GET",
url: "User/EfficientPaging",
data: { searchParam: searchParameter },
dataType: "json",
success: function (d) {
element.parent().parent().find(".file").empty();
if (d.Empty) {
element.parent().parent().find(".file").append("<span style='color: black' >No files in this folder.</span>");
element.parent().parent().find(".pagination").empty();
element.parent().parent().find(".pagination").hide();
} else {
// add the dynamic WebGrid to the body
element.parent().parent().find(".file").append(d.Data);
element.parent().parent().find(".pagination").empty();
element.parent().parent().find(".pagination").show();
element.parent().parent().find(".pagination").append(paging(1, d.Count, 5));
pagingEvent();
}
}
});
//$("#uploadFile").show();
//$("#uploadButton").show();
return false;
});
});
我正在尝试创建一个异步搜索框,除了编辑链接外,它运行良好。Html.Actionlink 抛出错误“当前上下文中不存在名称‘Html’。”
VS 建议使用 System.Web.Mvc.Html 添加,但 System.Web.Mvc.Html.ActionLink 不存在。