У меня есть следующая подпись контроллера:
public void DoSomething(string dialerJob, MyViewModel[] agentStates)
ViewModels представляют поля формы в массиве (выбранные элементы в таблице HTML). Я выяснил, как передать элемент формы int в качестве аргумента массива в контроллер благодаря плагину jQuery Роберта Коритника (.toDictionary ()) (http://erraticdev.blogspot.com/2010/12/sending-complex-json-objects-to-aspnet.html).
Однако теперь мне нужно передать один дополнительный строковый параметр (из раскрывающегося списка) в контроллер, и я не могу понять, как заставить это работать. Я пробовал разные комбинации, например:
var job = $('#DialerJobs').attr('value');
var data1 = $.toDictionary(data, "agentStates");
$.ajax({
url: "/Blending/ChangeOutboundJob",
type: "POST",
dataType: "application/JSON",
data: {job, data1}
});
Я также попробовал следующее:
var job = $('#DialerJobs').attr('value');
var data1 = $.toDictionary(data, "agentStates");
$.ajax({
url: "/Blending/ChangeOutboundJob",
type: "POST",
dataType: "application/JSON",
data: {dialerJob: job, agentStates: data1}
});
Но ни одна из них не работает.
Если я удаляю параметр dialerJob из данных для отправки, агентские состояния правильно заполнятся в контроллере. И то, что отправляется, выглядит так:
agentStates[0].agentId=7654&agentStates[0].projectId=999&agentStates[0].stateId=1&agentStates
[0] .subStateId = 1 & agentStates [1] .agentId = 9876 & agentStates [1] .projectId = 999 & agentStates * +1018 *
[1] .stateId = 1 & agentStates [1] .subStateId = 1
Но если я включил dialerJob, то получим следующее:
dialerJob=SomeJob&agentStates[0][name]=[0].agentId&agentStates[0][value]=84&agentStates[1][name]=
[0] .projectId & agentStates [1] [значение] = 999 & agentStates [2] [имя] = [0] .stateId & agentStates [2] [значение] * * тысяче двадцать-пять
= 1 & agentStates [3] [имя] = [0] .subStateId & agentStates [3] [значение] = 1 & agentStates [4] [имя] = [1] .agentId & agentStates * * тысяча двадцать семь
* 1 028 * [4] [значение] = 15884 & agentStates [5] [имя] = [1] .projectId & agentStates [5] [значение] = 999 & agentStates [6] [имя] = [1] .stateId & agentStates [6] [значение] = 1 & agentStates [7] [имя] = [1] .subStateId & agentStates [7] [значение] = 1
Что все запутано ...