0
   [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 不存在。

4

2 回答 2

1

你真的不应该在控制器中创建 html。

话虽如此,尝试

grid.Column(format: (item) => 
string.Format("<a href='{0}'>{1}</a>", Url.Action("Edit", "User", new { userId = item.id }), "Edit")
)))

这与

grid.Column(format: (item) => 
{
var link = Url.Action("Edit", "User", new { userId = item.id });
 return   string.Format("<a href='{0}'>{1}</a>", link, "Edit")

})))

这也与

grid.Column(format: (item) => GetLink(item.Id))))

/* later */

private string GetLink(int id){
     return string.Format("<a href='{0}'>{1}</a>", Url.Action("Edit", "User", new { userId = id }), "Edit");
}
于 2013-07-19T14:08:59.643 回答
0

我必须按以下格式添加 ActionLink:

grid.Column(format: (item) => new HtmlString(string.Format("<a href='{0}'>{1}</a>", Url.Action("Edit", "User", new {userId = item.id}), "Edit"))
                                              )));
于 2013-07-26T15:16:52.523 回答