2012-05-25 23 views
1

我有一種情況,當一個網頁被訪問時,一個控制器動作運行,基於用戶選擇檢索該頁面的數據。我試圖將數據作爲JSON對象發送回頁面,但是,數據在HTML頁面中作爲一個大字符串打開。控制器動作,概括地說,看起來像下面的代碼片段:從ASP.NET控制器的JSON對象查看

Public JsonResult MyMethod(string userSelection) 
{ 

    string userData = (string) Data; 
    return Json(userData, 「text」, JsonRequestBehavior.AllowGet); 
} 

我第一次嘗試使用JQuery的$.getJson()方法,但我認爲這是錯誤的,因爲我相信它會發出另一次調用action方法的數據,這不是我想要做的。我想要的是訪問JavaScript代碼中的JSON對象,以便我可以使用屬性數據填充網頁上的字段。基本問題是我的JavaScript必須在頁面首次呈現時接收JSON對象?我很抱歉如果我錯過了一些基本的東西;這是我的第一次嘗試。

+0

請張貼請求的URL。 – asawyer

回答

0

你想parseJSONgetJSON

http://api.jquery.com/jQuery.parseJSON/

編輯 - 哦,等一下你在JsonResult指向您的瀏覽器,就好像它是一個ActionResult?這是行不通的。

呈現正確的視圖,並使用getJSON調用JsonResult操作。

+0

要從動作返回JSON,JSONResult將與ActionResult相同。 JSonResult從ActionResult繼承。 – Shyju

+0

@Shyju對,我想,但我不確定,OP說他的路線指向JsonResult操作,解釋了整個頁面上的json字符串。 – asawyer

+0

我認爲這是他在客戶端如何處理數據的問題。 – Shyju

0

getJSONwhat你在找。在DOM完成加載後調用DOM ready事件。

$(function(){ 
//This code will be executed on the DOM ready (when the page is loaded) 

    $.getJSON("YourControllerName/MyMethod?userSelection=someValue",function(data){ 

     alert(data.FirstName);  
     alert(data.AnotherPropertyName);  

    }); 
}); 

getJSON是jQuery的ajax方法與數據類型的速記設置爲json

假設你的JSON數據你重新調整是這樣的

{ 
    "FirstName": "Scott", 
    "AnotherPropertyName": "SomeValue" 
} 

要像上面返回數據,更改這樣的動作方法

public JsonResult MyMethod(string userSelection) 
{ 
    var result=new { FirstName="Scott", AnotherPropertyName="Great"}; 
    return Json(result,JsonRequestBehavior.AllowGet); 
} 
+0

您正在使用我不熟悉的'Json'超載,我看到接受字符串的唯一重載,因爲第二個參數設置了響應MIME類型...? – asawyer

+0

@asawyer:啊!我從剪貼板複製了一個錯誤的東西。感謝您指點。更正它。 – Shyju

1

今天我仍然沒有運氣,但是當我離開工作時,我想出了一個走向我的車的策略。用戶在顯示列表的頁面上進行選擇,然後進入我無法弄清楚如何使用JsonResult的頁面。部分問題是用戶選擇包含調用控制器/操作的鏈接,該鏈接返回JsonResult,它與我想使用JsonResult的頁面中使用$ .getJson()相沖突。所以這裏是我的策略:當用戶做出將他們帶到(有問題的)頁面的選擇時,我將調用嚴格與(ASP)ViewData協同工作的控制器/操作,並使用ViewData最初呈現該頁面。一旦在頁面上,用戶可以改變選擇 - 我將用一個JavaScript事件處理這個事件,該事件使用$ .getJason()調用與(ASP)JsonResult一起工作的不同控制器/操作方法。在我嘗試這個策略之後,我會將結果發佈給任何感興趣的人。

相關問題