在ASP.NET MVC中使用JSON字符串从控制器返回视图

时间:2016-09-07 06:30:33

标签: c# json asp.net-mvc

我是ASP.NET MVC的新手。在我的应用程序中进行用户身份验证后,我将重定向到controller/action。在该操作中,我从服务中获取一些json数据。

我想将该字符串数据传递给视图,然后使用javascript操作json。注意:我说的是字符串,而不是模型。在Webforms中,

我通常会有一个页面范围的字符串变量,如:string _json。然后我将该var设置为我的服务返回的json。然后在我的标记页面中我会:

<script>
    var data = <%_json%>;
    etc.. 
</script>

有没有办法在ASP.NET MVC中执行此操作?:

控制器

public async Task<ActionResult> Index()
{
    string data = await _myService.GetList();
    return View(model); //here I want my view to know about data
}

查看

<script>
   var json = @data //something like this?
</script>

4 个答案:

答案 0 :(得分:0)

如果您的GetList方法返回正确的json字符串,那么只需使用ViewBag

<强>控制器

public async Task<ActionResult> Index()
{
    ViewBag.SomeData = await _myService.GetList();
    return View();
}

查看

<script>
   var json = @ViewBag.SomeData ; 
</script>

在其他情况下,您应该实现另一个方法,这将导致正确的json字符串,例如@Sarang版本将返回正确的字符串。用法:

<script>
   var json = @Html.Action("YourMethod", "YourController") ; 
</script>

答案 1 :(得分:0)

将控制器代码更改为:

public async Task<JsonResult> Index()
{
    string data = await _myService.GetList();
    return Json(data, JsonRequestBehavior.AllowGet); 
}

答案 2 :(得分:0)

将控制器代码更改为:

public async Task<JsonResult> Index()
{
  string data = await _myService.GetList();
  return Json(new
        {
            JsonData = data ,
            Status = true
        }, JsonRequestBehavior.AllowGet);
}

答案 3 :(得分:0)

这也是可行的。建模为字符串对象

<script>
   var data = @Html.Raw(Model)
</script>