2015-11-12 2 views
0

Я пытаюсь выполнить запрос Ajax к действию, отправляющему объект Json в качестве параметра.MVC Ajax GET метод с объектом JSON как параметр

Вот код Jquery:

var jsonObject = { 
    "Id": 33, 
    "Name": "TEST" 
}; 

$.ajax({ 
    type: "GET", 
    url: rootPath + "ScheduledEvents/Edit/", 
    data: JSON.stringify(jsonObject), 
    /*contentType: "application/json; charset=utf-8",*/ 
    dataType: "json", 
    success: function (data) { 
     $("#defaultModalRightEventContent").html(data); 
     $("#defaultModalRightEvent").modal("show"); 
    }, 
    error: function (request, status, error) { 
     alert(request.responseText); 
    } 
}); 

Вот класс на стороне сервера:

public class TestingClass 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

А вот действие контроллера:

[HttpGet] 
public ActionResult Edit(TestingClass testingClass) 
{ 
    return PartialView("_ScheduledEvent", new ScheduledEventVM()); 
} 

Происходит то, что даже если объект не имеет значения null при ударе t он действует как Id, так и Name как пустой.

Если я изменил метод с GET на POST, тогда объект вернется к действию, но затем я получу ошибку RequiredValidationToken. И поскольку на самом деле у меня нет формы с токеном, я действительно не в настройках.

Есть ли способ использовать GET или мне действительно нужно использовать POST.

Заранее за вашу помощь.

+0

Его просто 'данные: jsonObject,' (no '.stringify()') И он должен быть 'dataType:" html ",' (не 'json') с момента вашего возвращения –

ответ

1

Поскольку ваш метод читает Edit, это означает, что он изменяет состояние сервера. Надеемся, что операция обновления в базе данных.
Что касается RequiredValidation Token ошибка, думаю, вы говорите о AntiForgeryToken. Вы можете избежать этого, удалив атрибут [ValidateAntiForgeryToken] в своих почтовых запросах или вы можете предоставить тот же токен с клиентской стороны, используя вспомогательный метод.
Если вы напишете Html.AntiForgeryToken() в своих представлениях, он создаст скрытое поле в html с именем __RequestVerificationToken. Вы можете получить это значение, а также нажать на него вместе с данными и заголовком запроса ajax. После этого ваша проблема исчезнет.

+0

Спасибо за ваш ответ. Для этого мне пришлось пойти с методом POST. – andrefrua

Смежные вопросы