jqGrid GET 和 POST MVC 中的 mtype
Posted
技术标签:
【中文标题】jqGrid GET 和 POST MVC 中的 mtype【英文标题】:jqGrid GET and POST mtype in MVC 【发布时间】:2013-05-01 15:52:29 【问题描述】:我刚刚读到 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
-
如果我的 mtype 是 POST,我的 jqGrid 将如何加载返回的 json 数据?
在我的操作中,我是否还能将 jqGrid 的其他选项作为参数,如排序顺序、选择的页面大小?我可以在我的操作中使用
this.Request.Param["sidx"]
之类的东西吗?
【问题讨论】:
【参考方案1】:mtype 选项定义了 HTTP 请求的类型:
如果设置为 GET(默认情况下):请求参数附加在地址栏中的 http 查询中,如下所示 .../Controller/Action1?ParentId=selectedParentId 如果设置为POST,发送http查询时隐藏请求参数 实际上,这两种方法以不同的方式发送相同的参数。因此,使用 GET 或 POST 方法加载返回的 JSON 数据有任何不同当然,您也可以将 jqGrid 的其他选项作为排序顺序等参数获取
对不起我的英语不好
【讨论】:
【参考方案2】:在您的控制器中,您将获取 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 的内容,您还将看到您正在传入并使用这些参数来处理分页。
【讨论】:
以上是关于jqGrid GET 和 POST MVC 中的 mtype的主要内容,如果未能解决你的问题,请参考以下文章
如何使用asp.net mvc删除jqgrid中的多个寄存器?
无法在 asp.net mvc 4 中将 JSON 对象映射到 JqGrid
jqGrid Select 不更新 onchange (C# MVC)