我一直在找論壇2天,現在找不到一個好的答案,所以我只是發佈它。MVC2通過json發送來自控制器視圖的集合
我似乎有問題發佈JSON回控制器保存。 JSON應映射到模型視圖,但它始終獲取默認(構造函數)值而不是來自POST的值。
我們有一系列JS小部件,它們包含一個帶有json的數據字段。我們在客戶端的這些小部件對象中處理所有的數據操作。當用戶想要保存時,我們從所涉及的小部件獲取我們需要的數據,然後將其放入另一個JSON對象,該對象將ViewModel和POST返回給服務器。
例如:
$("#Save").click(function() {
if (itemDetails.preparedForSubmit() && itemConnections.preparedForSubmit()) {
itemComposite.data.Details = itemDetails.data;
itemComposite.data.Connections= itemConnections.data;
$.post(MYURL, itemComposite.data);
} else {
alert("failed to save");
}
});
的preparedForSubmit()方法簡單做的東西像任何驗證檢查或最後一分鐘格式化你可能需要做客戶端。
itemDetails小部件數據與ViewModel匹配。
itemConnections小部件數據與ViewModels的集合相匹配。
的控制器是這樣的:
[HttpPost]
virtual public JsonResult SaveItemDetailsComposite(ItemComposite inItemData)
{
if (ModelState.IsValid)
{
try
{
_Mapper.Save(itemComposite.Details , itemComposite.Connections);
return Json(true);
}
catch (Exception ex)
{
_log.Error("Exception " + ex.InnerException.Message);
throw;
}
}
return Json(SiteMasterUtilities.CreateValidationErrorResponse(ModelState));
}
的ItemComposite類是包含單個itemDetails對象的簡單視圖模型和itemConnections的集合。當它將數據返回到此處時,它只是獲取默認數據,就好像它獲得了新的ItemComposite,而不是轉換POST數據。
in Firebug我看到數據已發佈。雖然它看起來很奇怪,不會自動格式化爲螢火蟲。
謝謝我是一個.net noob來自GWT env,我會閱讀它,看看它是如何工作的。 – 2010-08-11 23:59:37