14

我正在尝试使用 ViewData 将 Json 传递给我的视图

控制器

ViewData("JsonRegionList") = Json(RegionService.GetActiveRegions())

看法

        $("input#UserRegion").autocomplete({
                source:"<%: ViewData("JsonRegionList").ToString %>",
                minLength: 3,

但我遇到的问题是输出源看起来像

        $("input#UserRegion").autocomplete({
                source:"System.Web.Mvc.JsonResult",
                minLength: 3,

这显然是不对的。我错过了一些基本的东西吗?

4

1 回答 1

19

Json() 控制器方法返回一个 JsonResult,它与 JSON 字符串不同。JsonResult 保存数据,但数据实际上是在 View Engine 调用 JsonResult.ExecuteResult() 时直接写入响应的。这可能比你想要的更多信息 - 关键是在控制器中调用 Json() 不会给你一个 JSON 字符串。

如果您只想将数据转换为 JSON 字符串,则可以使用 JavaScriptSerializer,这是 Json() 方法内部使用的:

JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList); 
于 2010-07-26T04:57:58.723 回答