我尝试为我的所有网格视图控制器制作一些抽象类。由于所有控制器都具有相同的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