Ajax не разрешает рендеринг View

0

У меня есть несколько вариантов аякса в зависимости от потока взаимодействий на странице. Но это только переменные, которые меняются. Вот один из них:

$('#btn_skickaEnkel').bind('click', function () {
        $.ajax({
            type: 'POST',
            url: '/Contact/IntresseAnmälan/',
            dataType: 'json',
            data: {
                Namn: $('#namn').val(),
                Mail: $('#mail').val(),
                Info: $('#meddelande').val(),
                Nivå: $('#nivå').find(":selected").text(),
                IsEnkel: true,
                Telefon: $('#nr').val(),
                ID: function () {
                    var url = window.location.pathname;
                    var id = url.substring(url.lastIndexOf('/') + 1);
                    return id;
                }
            },
            traditional: true
        });
    });

В моем контроллере я не могу перенаправить или вернуть другое представление. На данный момент данные JSON уже не актуальны, поскольку они уже сохранены в БД.

Мой контроллер:

 public ActionResult IntresseAnmälan(BokningContainer bokning)
    {
        db = new DbContext();

        //Saving some data to database(removed)

        //Just determening the state of container obj.
        if (bokning.IsEnkel)
        {

            //Geting som information from db (removed)

            //Creating a mail (removed)
            email.Send(bokning.Namn, bokning.Mail, body);

        }
        else
        {

        }

        //db.SaveChanges(); 

        //This part is not working, I think it beacuase of the Ajax
        return View("IntresseAnmälan"); 
    }

Представление не отображается, и я думаю, что это связано с ajax. Вид просто не отображается. Есть ли способ принудительно вернуть его и игнорировать ajax? Как я уже сказал, данные больше не нужны, потому что контент уже сохранен в БД.

Теги:
asp.net-mvc
redirect

2 ответа

0
Лучший ответ

Вы не можете визуализировать вид на ajax-вызове, просто вы можете использовать метод отправки формы или просто перенаправить его на желаемое действие на "succcess" ajax-вызова, как показано ниже:

$('#btn_skickaEnkel').bind('click', function () {
    $.ajax({
        type: 'POST',
        url: '/Contact/IntresseAnmälan/',
        dataType: 'json',
        data: {
            Namn: $('#namn').val(),
            Mail: $('#mail').val(),
            Info: $('#meddelande').val(),
            Nivå: $('#nivå').find(":selected").text(),
            IsEnkel: true,
            Telefon: $('#nr').val(),
            ID: function () {
                var url = window.location.pathname;
                var id = url.substring(url.lastIndexOf('/') + 1);
                return id;
            }
        },
        traditional: true,
        success: function(result) {
             window.location.href = '@Url.Action("action", "Controller")';
       } 
    });
});
  • 0
    Я попробовал ваше решение, и оно не решило мою проблему. Даже без -> успеха: реализация, я все еще добираюсь до контроллера. Я даже отрисовываю _Layout.cshtml, но когда я попадаю в часть @RenderBody () в _Layout.cshtml, это просто не рендеринг.
0

Я не мог поверить своим глазам, когда понял это "Багг". Проблема заключалась в том, что я в какой-то момент изменил представление на кнопку. Таким образом, форма никогда не отправлялась. Ну, по крайней мере, я немного узнал о взглядах и Ajax.

Извините за то, что вы не спешите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню