Я пытаюсь сделать некоторый абстрактный класс для всех контроллеров сетки. Поскольку все контроллеры будут иметь одно и то же GridViewPartial Action, но с разными параметрами, я решил создать struct ActionParams с свойством Args, чтобы сохранить все входные параметры. Так вот моя структура:Объект Devexpress MVC как аргумент обратного вызова
public struct ActionParams
{
public Dictionary<string, object> Args { get; set; }
}
И контроллер действия
public ActionResult GridViewPartial(ActionParams input) { }
Проблема заключается в функции JS onBeginCallback. Я пытался выполнить эту задачу в 2-мя способами:
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);
}
Таким образом, я получил пустой Args. Но объект в 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 все работает нормально).
Надеюсь, что кто-то с отличными выражениями управления MVC devexpress даст мне хороший совет.
Я не пытался вообще) После прочтения вашего ответа, я решил сделать , который позволит мне послать любые данные, которые я хочу и что на преобразовать его на сервере в нужные мне данные. Теперь я получаю свой json в словаре, где key = objname amd value = serialized string) –
DespeiL
Thx, для анализа вашей детали проблемы и предложений – DespeiL