2009-11-13 138 views
0

我有一堆主要用於保存數據到後端存儲的控制器操作。現在大多數人使用這樣的簽名:ASP.NET MVC,JSON發佈到控制器操作FormCollection參數

// 
    // POST: /WidgetZone/Create 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection) 

正如你所看到的,它接受FormCollection。這適用於經典用戶視圖。現在我想讓JSON啓用這些操作。而我呢使用JsonPox行爲過濾器這個樣子:

// 
    // POST: /WidgetZone/Create 
    [JsonPox] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection) 

將這項工作時的動作需要的FormCollection?

例如沒有問題(當然我構建JSON對象在我的JavaScript客戶端將其傳遞到這個行動)這項工作:

// 
    // POST: /WidgetZone/Create 
    [JsonPox] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(string id, string description) 

這是所有關於回傳UI轉換成異步的任務一個,所以保存和更新將被完成異步。我在正確的軌道上嗎?我認爲開發獨立的Json,XML或經典的ViewResult操作並不是最好的方法。

幫助理解

回答

1

該過濾器是基於所述操作方法,以便執行以JSON或XML序列化返回模型後運行該所述OnActionExecuted方法。作爲行動方法的輸入並不重要。一旦動作完成執行,過濾器將查找存儲在ViewResult中的模型,並根據請求中傳遞的Content-Type頭將其序列化。

+0

怎麼回傳反饋?例如,如果沒有異常,我想返回「創建成功」,如果出現錯誤,我想返回「創建失敗」。 在控制器內部,我使用ViewData [「Message」] =「Success」執行操作,然後在視圖本身中訪問ViewData。 如何使用Json返回此文本?我應該添加額外的屬性到我的模型類嗎?例如,屬性LastActionResult WidgetZone類?然後返回創建的對象Json序列化,這個屬性也將被包含。 ?? – mare 2009-11-13 15:41:14

+0

是的,你需要添加一個屬性到你的模型,因爲過濾器只會序列化模型的內容,而不是你在ViewData中的內容。 – 2009-11-13 16:29:52

相關問題