2010-05-10 82 views
0

我有我的看法如下代碼:如何讀取Json返回的值?

<% using (Ajax.BeginForm("JsonCreate", new AjaxOptions { OnComplete = "createCategoryComplete" })) 


    { %><div id="createCategory"> 
     <fieldset> 
      <legend>Add new category</legend> 
      <p> 

<%=Html.TextBox("CategoryId")%> 
<%=Html.TextBox("Test")%> 
      <label for="name">Name:</label> 
      <%= Html.TextBox("Name")%> 
      <%= Html.ValidationMessage("Name")%> 

     </p> 
     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
</div> 

在控制器中的代碼如下:

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult JsonCreate(string Name) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 


       //Return a json object to the javascript 
       return Json(new { CategoryId = 123, Test= "test successful" }); 
      } 
      catch 
      { 
       #region Log errors about the exception 
       //Log error to administrator here 
       #endregion 
      } 
     } 

     //If we got this far, something failed, return an empty json object 
     return Json(new { /* Empty object */ }); 
    } 

應該是什麼在視圖中的代碼下面的函數來讀Json返回的值,並更新CategoryId和Test的文本框?

function createCategoryComplete() {....???} 
+3

你設法讓這個網站> 100的聲譽,但仍無法格式化問題正確嗎? – Tomalak 2010-05-10 11:14:00

回答

0
function createCategoryComplete(e) { 
    var obj = e.get_object(); 
    alert(obj.CategoryId + ' ' + obj.Test); 
} 
+0

它不顯示警報,而是給我一個對話框來保存json值 – learning 2010-05-10 11:29:00

+0

這可能是因爲你的頁面有一個javascript錯誤,並且AJAX調用沒有被執行。你有沒有在你的頁面中包含'MicrosoftAjax.js'和'MicrosoftMvcAjax.js'腳本? – 2010-05-10 11:30:50

+0

謝謝。這解決了我的問題。如何顯示Json返回的模型狀態錯誤? 如果我正在做以下操作: ModelState.AddModelError(「_ FORM」,「用戶名或密碼不正確。」); return Json(new {ModelState}); 什麼必須是我的代碼在視圖中呢? – learning 2010-05-10 12:02:17

0

試試這個,

success: function(data) { 
     alert(data.CategoryId + " " + data.Test); 

編輯:

function createCategoryComplete(data) 
{ 
    document.getElementById("UrTxtBoxID").value = data.Test; 
} 
+0

我應該在哪裏寫這個?如何使用data.CategoryId和data.Test的值更新文本框? – learning 2010-05-10 11:17:38