2013-12-23 66 views
0

根据页面上的交互流程,我在ajax上有几个变体。但它只是变化的变化。这里是其中之一: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的数据不再相关,因为它已保存到数据库。

我的控制器:

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?正如我所说的,数据不再需要,因为内容已经保存到数据库。

回答

0

你不能渲染视图上Ajax调用,只需你可以使用表单POST方法还是只是将其重定向到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,但是当我到达_Layout.cshtml中的@RenderBody()部分时,它不会呈现。 –

0

我简直不敢相信自己的眼睛当我想出这个“Bugg”时。问题在于,我在某个时候将提交更改为按钮。所以表单从不提交。那么,至少我学到了一些关于视图和Ajax的知识。

对不起,你抽出时间。