ASP.NET MVC отправляет массив json на контроллер как обычный пост-запрос (nonajax) - PullRequest
1 голос
/ 24 апреля 2010

Все примеры json, которые я могу найти в Интернете, показывают только, как передать массивы json с помощью команды jquery $ .ajax (). Я отправляю некоторые данные из пользовательского элемента управления в виде массива json. Мне было интересно, можно ли отправить массив json в виде обычного почтового запроса на сервер (как в обычной форме), чтобы браузер отображал возвращенную страницу.

Контроллер:

[JsonFilter(Param = "record", JsonDataType = typeof(TitleViewModel))]
public ActionResult SaveTitle(TitleViewModel record)
{
    // save the title.
    return RedirectToAction("Index", new { titleId = tid });
}

Javascript:

function SaveTitle() {
    var titledata = GetData();

    $.ajax({
        url: "/Listing/SaveTitle",
        type: "POST",
        data: titledata,
        contentType: "application/json; charset=utf-8",
     });

}

Который вызывается с кнопки сохранения. Все работает нормально, но браузер остается на странице после отправки. Я думал о том, чтобы вернуть какой-то пользовательский xml с сервера и сделать редирект javascript, но это выглядит очень хакерским способом. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 07 марта 2011

Это старый вопрос, но он может быть полезен любому, кто его найдет -

Вы можете вернуть JsonResult с вашим новым titleId с веб-страницы

public ActionResult SaveTitle(TitleViewModel record) {
     string tId = //save the title 
     return Json(tId)
}

, а затем в вашем ajax-запросе добавьте функцию успеха:

function SaveTitle() {
    var titledata = GetData();

    $.ajax({
        url: "/Listing/SaveTitle",
        type: "POST",
        data: titledata,
        contentType: "application/json; charset=utf-8",
        success: function(data) { window.location = "/Listing/Index?titleId=" + data; }
     });

}

Это перенаправит страницу после успешного запроса ajax. Я только что видел, что вы упомянули об этом в конце своего поста, но я думаю, что это простой и быстрый способ обойти эту проблему.

0 голосов
/ 26 апреля 2010

Я не понимаю, почему вы захотите опубликовать Json, если вы хотите сделать пост на всю страницу. Почему бы просто не опубликовать обычные переменные формы из HTML-элемента формы?

0 голосов
/ 24 апреля 2010

У Phil Haack есть хорошее сообщение, в котором обсуждается этот сценарий , и показано использование настраиваемого поставщика значений вместо фильтра действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...