MVC中的jqGrid GET和POST mtype

时间:2013-05-07 15:49:52

标签: model-view-controller jqgrid mvcjqgrid

我刚刚读到jqGrid中的mtype选项将决定我们如何进行ajax调用。 GET将检索数据,POST将发送数据。

当我加载我的jqGrid时,我想在我的js文件中将一个额外的参数传递给我的控制器:

url: 'Controller/Action1',
mtype: 'POST',
datatype: 'json',
postData: { ParentId:  selectedParentId },

在我的控制器中我有这个:

public JsonResult Action1(ParentId)
{
 // Retrieve child properties from db using ParentId
 // Return json result
}
  1. 如果我的mtype是POST,我的jqGrid将如何加载返回的json数据?
  2. 在我的操作中,我是否仍然可以将我的jqGrid的其他选项作为排序顺序,页面大小等参数?我可以在行动中使用this.Request.Param["sidx"]这样的内容吗?

2 个答案:

答案 0 :(得分:1)

在你的控制器中,你将获取jqGrid传递给你的所有参数:

public ActionResult GetGridData(string sidx, string sord, int page, int rows, bool _search, string filters, string ParentId)
{
 ....
 int totalRecords = wholeList.Count();
 var pagedQuery = wholeList.OrderBy(sidx + " " + sord).Skip((page - 1) * rows).Take(rows).ToList();

        var jsonData = new
        {
            total = (totalRecords + rows - 1) / rows,
            page = page,
            records = totalRecords,
            rows = (
            from tempItem in pagedQuery
            select new
               {
                cell = new string[] {
                    tempItem.ToString(),
                    ...


               }
            }).ToArray()

 return Json(jsonData, JsonRequestBehavior.AllowGet);
}

您可以使用额外参数来更改反馈到jqGrid的内容,并且您还将看到您正在传入并使用参数来处理分页。

答案 1 :(得分:1)

  1. mtype选项定义HTTP请求的类型:

    • 如果设置为GET(默认情况下):请求参数将附加在地址栏中的http查询中,如下所示... / Controller / Action1?ParentId = selectedParentId
    • 如果设置为POST,则在发送http查询时隐藏请求参数 实际上,这两种方法以不同的方式发送相同的参数。因此,使用GET或POST方法加载返回的JSON数据有任何不同之处
  2. 当然,您可以将jqGrid的其他选项作为排序顺序等参数

  3. 抱歉我的英文不好