Ajax不允许View渲染

时间:2013-12-23 09:40:40

标签: asp.net-mvc jquery redirect

根据页面上的交互流程,我对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
        });
    });

在我的控制器中,我无法重定向或返回其他视图。此时,来自JSON的数据不再相关,因为它已经保存到DB。

我的控制器:

 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's beacuase of the Ajax
        return View("IntresseAnmälan"); 
    }

视图未呈现,我认为它与ajax有关。视图根本不呈现。有没有办法迫使它返回并忽略ajax?正如我所说,不再需要数据,因为内容已经保存到数据库中。

2 个答案:

答案 0 :(得分:0)

您无法在ajax调用上呈现视图,只需使用表单发布方法或只是将其重定向到ajax调用的“succcess”所需的操作,如下所示:

$('#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")';
       } 
    });
});

答案 1 :(得分:0)

当我弄清楚这个“Bugg”时,我简直不敢相信自己的眼睛。问题是我在某个时候将提交更改为按钮。所以表格永远不会提交。好吧,至少我学到了一些关于视图和Ajax的知识。

抱歉花时间。

相关问题