从ASP.NET控制器查看JSON对象

时间:2012-05-25 18:11:09

标签: javascript asp.net-mvc json

我的情况是,当访问网页时,运行控制器操作,该操作根据用户选择检索该页面的数据。我试图将数据作为JSON对象发送回页面,但是,数据在HTML页面中打开为一个大字符串。简而言之,控制器操作类似于以下代码段:

Public JsonResult MyMethod(string userSelection)
{

    string userData = (string) Data;
    return Json(userData, “text”, JsonRequestBehavior.AllowGet);
}

我首先尝试使用JQuery $.getJson()方法,但我认为这是错误的,因为我认为它会对数据的action方法发出另一个调用,这不是我想要做的。我想要的是在JavaScript代码中访问JSON对象,以便我可以使用属性数据填充网页上的字段。基本问题是我在JavaScript中必须做什么才能在首次呈现页面时接收JSON对象?如果我遗漏了一些基本的东西,我道歉;这是我的第一次尝试。

3 个答案:

答案 0 :(得分:1)

我今天仍然没有运气但是当我离开工作时,我想出了一个走向我车的策略。用户在进入页面之前从显示列表的页面中进行选择,在该页面上我无法弄清楚如何使用JsonResult。问题的一部分是用户选择包含一个链接,该链接调用返回JsonResult的控制器/操作,这与在我想使用JsonResult的页面中使用$ .getJson()冲突。所以这是我的策略:当用户做出将它们带到(有问题的)页面的选择时,我将调用一个严格适用于(ASP)ViewData的控制器/动作,并使用ViewData初始呈现该页面。一旦在页面上,用户可以更改选择 - 我将使用JavaScript事件处理此事件,该事件使用$ .getJason()调用与(ASP)JsonResult一起使用的不同控制器/操作方法。在我尝试这个策略后,我会将结果发布给任何有兴趣的人。

答案 1 :(得分:0)

您希望parseJSON不是getJSON

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

编辑 - 哦,等着您将浏览器指向JsonResult,就好像它是ActionResult一样?那不行。

渲染正确的视图,并使用getJSON来调用JsonResult操作。

答案 2 :(得分:0)

您正在寻找

getJSON what。在DOM就绪事件上调用它,该事件将在DOM完成加载后执行。

$(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"
}

要返回上述数据,请像这样更改您的Action方法

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