MVC2 で ajax ポスト リクエストを処理するためのガイドラインについて混乱しています。グリッドがリクエスト パラメータとして渡すデータを知るにはどうすればよいですか? どのような順序で、どのデータ型ですか? これを知った後は、サーバー側のポスト メソッドを設計できるのは 1 人だけだからです。サーバー側のメソッド ハンドラーとしてさまざまな関数プロトタイプを使用した多くの例を見てきました。
そんなことがあるものか?つまり、ajax投稿を行うのと同じjqgridです。同じjqgridのサーバー側アクションとして、どのように異なるタイプの関数プロトタイプが存在できますか?
編集
私の要件は、JqGrid が ajax 呼び出しを行うたびに、ドロップダウン リストの選択された値などの追加データを送信することです。ただし、MVC は JqGrid パラメーターのみを受け入れます。「paramData」を介して余分なデータを追加し、コントローラーのリクエストハンドラーでそれを受け取ることができますが、回避策があります。問題は、Grid パラメーターを逆シリアル化する Grid クラスを使用しており、このクラスがアプリに対してグローバルであることです。そのため、ページごとに変更することはできません。
私が必要とするのは、最初のパラメータが設定されているだけでは機能しないこれです:-
public void Jgrid(Jgrid grid,object hdnupdpg,string p_roleid)
{
}
しかし、どうすれば Jgrid.ajax 呼び出しでこれらの otherparams を送信できますか? 「paramsData」オプションのみを使用しますか?
ここに私が遭遇したサーバー側関数のプロトタイプがあります:
public void JGridData(JGrid grid)
{
}
そして、ここにグリッドクラスがあります
public class JGrid
{
private bool IsSearch;
public string sidx { get; set; }
public string sord { get; set; }
public int page { get; set; }
public int rows { get; set; }
public bool _search
{
get
{
string strSearch = HttpContext.Current.Request["_search"];
if (!string.IsNullOrEmpty(strSearch))
return Convert.ToBoolean(strSearch);
else
return IsSearch;
}
set { IsSearch = value; }
}
public string searchOper { get; set; }
public string filters { get; set; }
public int totalRecords { get; set; }
public string procName { get; set; }
public string SearchValue { get; set; }
public string SearchField { get; set; }
public string defaultFilter { get; set; }
public string SortExpression
{
get { return sidx + " " + sord; }
}
public string FilterExpression
{
get
{
string filter = BuildFilter();
if (!string.IsNullOrEmpty(defaultFilter) && !string.IsNullOrEmpty(filter))
return defaultFilter
+ " AND (" + filter + ")";
else if (!string.IsNullOrEmpty(defaultFilter))
return defaultFilter;
return filter;
}
}
public string BuildFilter()
{
....
}
}
編集
Here is my Script for JqGrid
jQuery('#jgrid').jqGrid({
autowidth: true,
altRows: true,
altclass: 'grdAltRwClr',
datatype: 'local',
forceFit: true,
gridview: true,
height: 290,
mtype: 'post',
rowList: [10, 20, 30],
rowNum: 10,
pager: '#pager',
pagerpos: 'right',
recordpos: 'left',
rownumbers: false,
scrollrows: false,
sortname: 'roledtlid',
toolbar: [true, "top"],
url: rootPath + 'RoleDetail/JGridData',
postData: { extraparams: function() { return escape(jQuery('#hdnupdpg').val()); },
parentid: function() { return escape(jQuery('#p_roleid').val()); }
},
beforeSelectRow: function(rowid, e) { return false; },
gridComplete: function() { GridComplete() },
colModel: [
{ name: 'act', label: 'View', resizable: false, search: false, sortable: false, title: false, width: 6, index: 'act' }
, { name: 'roleid', label: 'Role id', width: 10, index: 'roleid' }
, { name: 'rolename', label: 'Role Name', width: 25, index: 'rolename' }
, { name: 'pgname', label: 'Page Name', width: 30, index: 'pgname' }
, { name: 'canedit', label: 'Edit', width: 10, index: 'canedit' }
, { name: 'canview', label: 'View', width: 10, index: 'canview' }
]
});