2010-10-20 49 views
2

如何將json輸出從控制器動作傳遞到其視圖? 當我嘗試過發,我的代碼是:如何發送Json輸出在asp.net中查看mvc

public ActionResult Index() 
{ 
    Guid Id = new Guid("66083eec-7965-4f3b-adcf-218febbbceb3"); 
    List<TasksToOfficer> officersTasks = tasks_to_officer_management.GetTasksToOfficers(Id); 
    return Json(officersTasks) 

}

它所需要的JsonRequestBehavior.AllowJson像參數。我知道這是新的asp.net mvc 2,但作爲重定向查看有沒有發生,但要求下載json輸出文件。我想在我的jQuery中使用返回的數據。但是在那裏出錯了。如果我刪除了參數,則顯示錯誤:
此請求已被阻止,因爲在GET請求中使用此信息時,敏感信息可能會泄露給第三方網站。要允許GET請求,請將JsonRequestBehavior設置爲AllowGet。


如何避免這種情況並獲取json數據?

回答

6

下面是你正在嘗試做的一個例子。首先在你看來,你叫$.getJSON從動作抓取JSON數據:

$.getJSON('/Data/StockQuote', function(data) { 
    if (data.success) { 
     ShowStockQuote(data);       
    } 
}); 

那麼你的行動將是這樣的:

public JsonResult GetStockQuote() 
    {     
     JsonResult result = new JsonResult() 
     { 
      Data = new { 
       lastTradePrice = 50, 
       lastUpdated = "10/1/2010", 
       expirationDate = "10/2/2010", 
       success = true 
      }, 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet 
     }; 

     return result; 
    } 

一旦JSON數據從你的行動回到$.getJSON您可以使用數據訪問JSON對象的所有值。所以data.success會給你成功等等。

+0

感謝您的回覆,但此代碼中的StockQuote和ShowStockQuote(數據)是什麼?我認爲action的名字是GetStockQuote()。我必須考慮那裏> – 2010-10-22 07:27:24

+0

好,但我可以保持我的行動返回類型爲Json結果嗎?而不是ActionResult?我試過了,它像上面那樣需要返回類型,但仍然要求下載。該怎麼辦? – 2010-10-22 07:35:01

+0

helllloooooooooo是有人嗎?請解決這個問題。或者請告訴我是否有任何選項而不是json? – 2010-10-22 09:00:18