2013-07-10 19 views
0

我有一個控制器操作,返回一個JSON如下。我沒有得到任何錯誤。如果我填充靜態數據,它會顯示在窗口中。解析Kendo UI中的JSON窗口控件

public ActionResult Reader() 
     { 

      return Json(new 
      { 
       ReaderName = "First Floor", 
       Cardholder = "John, Doe", 
      }); 
     } 

現在我在客戶端有一個kendo UI窗口,我想從操作中填充這些數據。 AM我做錯了什麼,因爲我無法將這些數據解析到窗口。模板似乎不起作用! 以下是客戶端代碼。

wnd = $("#details") 
         .kendoWindow({ 
          title: "Reader Name", 
          modal: false, 
          visible: false, 
          resizable: false, 
          width: 300, 
          content: { 
           url: "/List/Reader", 
           dataType: "json", 
           template:"ReaderName #=ReaderName#" 

          } 

         }).data("kendoWindow"); 
+0

你有什麼錯誤嗎?你是否檢查過服務器是否使用控制檯返回正確的響應? MVC傾向於要求AJAX請求具有正確的標題才能返回JSON – CodingIntrigue

+0

編輯我的問題。 – ckv

+0

@ Blade0rz:我使用提琴手檢查。看起來像JSON GET請求被阻止。一旦我設置jsonrequestbehaviour它開始工作。無論如何,謝謝。如果你可以發佈它作爲答案,我會投票。 – ckv

回答

1

要在ASP.NET MVC GET請求返回JSON,你需要指定JsonRequestBehaviour:

public ActionResult Reader() 
     { 

      return Json(new 
      { 
       ReaderName = "First Floor", 
       Cardholder = "John, Doe", 
      }, JsonRequestBehavior.AllowGet); 
     } 
+0

雖然我有其他的操作返回JSONRESULT,它工作得很好。爲什麼只有這樣會導致問題呢?我提到的其他操作也在同一個控制器中,並在同一個客戶端頁面中使用。 – ckv

+0

也許他們正在被POST請求請求。這不需要JsonRequestBehavior – CodingIntrigue

+0

我注意到另一個請求是JSON/List/GetContents HTTP/1.1 – ckv

1

當您返回的JSON對象是單數時,您正在使用data.ReaderName。

你可以這樣做:

public ActionResult Reader() 
     { 

      return Json(new 
      { 
       data = new { 
        ReaderName = "First Floor", 
        Cardholder = "John, Doe" 
       } 
      }); 
     } 

或者乾脆:

template:"ReaderName #= ReaderName #" 
+0

我試過這個,但沒有運氣。嘗試第二個選項模板。 – ckv

+0

你也可以嘗試第一個選項嗎?有了數據標籤? –

+1

你可以看看螢火蟲,看看回應是什麼迴應? –