2011-12-18 77 views

回答

2

假設你有一個模型,一個強類型的視圖中,您可以使用$就法在整個模型發送到使用JSON AJAX請求的服務器:

@model MyViewModel 

<script type="text/javascript"> 
    var model = @Html.Raw(Json.Encode(Model)); 
    $.ajax({ 
     url: '@Url.Action("Foo")', 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({ model: model }), 
     success: function(result) { 
      // TODO: process the result from the server 
     } 
    }); 
</script> 

和相應的控制器動作,這是我們發送POST請求:

[HttpPost] 
public ActionResult Foo(MyViewModel model) 
{ 
    // TODO: do something with the request and return a result 
} 
+0

我在Json.Encode(Model)中獲得循環引用。 MyViewModel具有模型的屬性。 Model類是通過Linq to Sql生成的。這是因爲參考表? – jmogera 2011-12-20 13:18:01

+1

@jmogera,你不應該將域模型(例如Linq-To-SQL類)傳遞給你的視圖。您應該只使用視圖模型,這些模型是您爲每個視圖專門定義的類,以便滿足其要求。 – 2011-12-20 15:42:29

+0

謝謝。我對此很陌生,但是我創建了僅適用於視圖的屬性,並且沒有將模型屬性傳遞給視圖。上面列出的事件確實被調用,但「MyViewModel」具有空引用。我設置了@ Html.TextBorFor(x => x.Property1)。當我在字段中輸入txt並按下按鈕時,Property1不會更新。任何想法爲什麼參數中的整個對象都是空的? – jmogera 2011-12-20 21:17:25

相關問題