从控制器创建JSON

时间:2013-03-31 14:06:13

标签: c# jquery asp.net-mvc-3 razor

我正在使用控制器来创建JSON字符串。

StringBuilder builder = new StringBuilder();
...
builder.Append(String.Format(@"{{""lat"":{0}, ""lon"":{1}}},", latitude, longitude));

当涉及到视图时,上面的代码将呈现为类似

的内容
"lat":10.7654200827348, "lon":106.681716282384}

所以jQuery.parseJSON()不起作用,因为它不理解" 我该如何解决这个问题?提前谢谢

2 个答案:

答案 0 :(得分:2)

永远不要像这样手动创建JSON。您可以让控制器操作返回JsonResult:

public ActionResult SomeAction()
{
    var model = new
    {
        lat = latitude,
        lon = longitude
    };
    return Json(model, JsonRequestBehavior.AllowGet);
}

然后您可以使用AJAX调用来使用此操作:

<script type="text/javascript">
    $.getJSON('@Url.Action("SomeAction")', function(result) {
        // you could use result.lat and result.lon here directly
        alert('latitude: ' + result.lat + ', longitude: ' + result.lon);
    });
</script>

在这种情况下,您无需手动构建或解析任何JSON。这个管道将由你的框架处理。

答案 1 :(得分:0)

我不知道这是否可以解决您的问题...但无论如何您应该遵循这个建议!

使用JavaScriptSerializer中的System.Web.Extensions.dll生成您的JSON!

var serializer = new JavaScriptSerializer();
builder.Append(serializer.Serialize(new { lat = latitude, lon = longitude }));