我嘗試爲我的所有網格視圖控制器製作一些抽象類。由於所有控制器都具有相同的GridViewPartial Action但具有不同的參數,因此我決定使用Args屬性創建結構ActionParams以保留所有輸入參數。 因此,這裏是我的結構:Devexpress MVC對象作爲回調參數
public struct ActionParams
{
public Dictionary<string, object> Args { get; set; }
}
和控制器的動作
public ActionResult GridViewPartial(ActionParams input) { }
的問題是在JS onBeginCallback功能。我試圖以兩種方式執行此任務:
1)
function onBeginCallback(s, e)
{
e.customArgs["Args"]={"value1":1,"value2":2};
}
非但沒有串鍵和int值的,我得到了字符串鍵和字符串[]值。據我瞭解這是序列化問題。
2)
function onBeginCallback(s, e)
{
var editorsNames = {"value1":1),"value2":2}
e.customArgs["Args"] = $.toJSON(editorsNames);
}
這樣我得到空的參數數量。但對象是Request.Params所以我在下面的方式獲得:
public ActionResult GridViewPartial(ActionParams input)
{
string jsonText = Request.Params["Args"];
if (string.IsNullOrEmpty(jsonText))
{ }
else
{
ActionParams data = new ActionParams>();
try
{
data.Args = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Dictionary<string,int>>(jsonText);
}
catch
{
ViewData["ErrorMessage"] = "Incorrect data";
}
}
}
現在,我不知道是否可以直接發送此JSON對象input.Args就像是在情況1?(簡單的jquery ajax一切正常)。
希望有一個偉大的devexpress MVC控件表達式的人會給我一些很好的建議。
我沒有嘗試在所有)閱讀你的答案後,我決定做<字符串,字符串>,讓我送,我想要的任何數據和上將其轉換成我需要的數據。 現在我在字典中獲取我的json,其中key = objname amd value = serialized string) –
DespeiL
Thx,爲您的詳細問題分析和建議 – DespeiL