Хорошо, так что ситуация в том, что я на своей индексной странице. У меня есть событие jQuery onClick следующим образом:
$('#example').on('click', 'tr', function (e) {
var aData = oTable.fnGetData(this);
showCampaign(aData);
});
Я проверил, что эта функция работает так, как предполагалось, и aData завершается заполнением массивом, содержащим данные из каждой ячейки в строке таблицы, которая будет нажата.
То, что мне нужно сделать, - это когда этот клик даже происходит, снимает aData с моим MVC и загружает новое представление, которое я могу заполнить этими данными. Это то, что я сейчас пытаюсь...
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/Show",
data : aData
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
Эта функция работает до точки... она отправляет запрос на мой MVC... но я не вижу, как данные проходят (нулевой), и когда я возвращаю строку ответа, страница не загружается.
Метод в моем классе контроллера выглядит следующим образом:
[HttpPost]
public ActionResult ShowCampaign(String[] aData)
{
var redirectUrl = new UrlHelper(Request.RequestContext).Action("TestView","Test");
return Json(new {Url : redirectUrl });
}
Для целей вышеуказанного TestView - это имя View, которое я хочу загрузить, а Test - это контроллер.
Что я делаю неправильно здесь.. Я пытаюсь понять MVC, но я просто еще не получил его... свет не нажал.
Проблема здесь в том, что вы не называете параметр. Если вы говорите, что aData - это массив, вы должны обернуть его в объект. Свойство должно соответствовать имени параметра метода контроллера.
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/ShowCampaign",
data: { aData: aData }
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
Еще один совет, который вам может пригодиться. Вы можете использовать Url.Action()
для создания своих URL-адресов. http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.108).aspx