2010-05-10 83 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