2013-01-13 55 views
0

這裏給控制器是控制器無法從視圖發送數據(剃刀)通過AJAX POST請求

public ViewResult AddNewRow(ProjectBudgetModel model) 
{ 
    //Some oprations goes here on the passed model the return to the same view 
    return View("AddNewProjectBudget", model); 
} 

這裏是其具有AJAX調用等

$.ajax({ 
      url: '@Url.Action("AddNewRow", "ProjectBudget")', 
      type: 'post', 
      data: {model: '@Model'}, 
      contentType: 'application/json; charset=utf-8;', 
      dataType: 'json', 
      success: function (response) { 
       alert(response.success) 
       return; 
      }, 
      error: function (x) {     
       alert(x.status); 
      } 
     }); 

@Model其是圖在ajax調用的數據頭中傳遞的是ProjectBudgetModel

在這裏出了點問題,具體而我將數據傳遞給控制器​​ 它甚至沒有擊中brekpoint o f控制器中的addNewRow函數

有幫助嗎?

回答

2
data: {model: '@Model'}, 

根本不會做你認爲它所做的一切。看看生成的標記,看看是否會發出一些損壞的值。

它應該是這樣的:

data: JSON.stringify(@Html.Raw(Json.Encode(Model))), 

JSON.stringify方法本身內置到現代的瀏覽器。如果由於某些原因您需要支持石器時代的瀏覽器,您可以將json2.js腳本包含在您的頁面中,該頁面將定義該方法。

+0

不知道有石器時代的瀏覽器 –

+2

@roasted,當然有。 Internet Explorer 6是這種瀏覽器的一個很好的例子。我記得[Fred Flintstone](http://en.wikipedia.org/wiki/Fred_Flintstone)談論在瀏覽互聯網時遇到問題。 –

0

我能夠從觀點到控制器模型發送數據的唯一方法是使用:

data: $("#FORM_ID").serialize(),

如果我用的是:數據:JSON.stringify(@Html.Raw(Json.Encode(Model))),控制器接收到空模型。