从控制器返回一个带有JSON字符串的视图.净MVC

本文关键字:字符串 JSON 视图 MVC 一个 返回 控制器 | 更新日期: 2023-09-27 18:05:53

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

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

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

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

是否有办法做到这一点在ASP。净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>

从控制器返回一个带有JSON字符串的视图.净MVC

将控制器代码更改为:

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

将控制器代码更改为:

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

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

控制器

public async Task<ActionResult> Index()
{
    ViewBag.SomeData = await _myService.GetList();
    return View();
}
<<p> 视图/strong>
<script>
   var json = @ViewBag.SomeData ; 
</script>

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

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

这个也可以。作为字符串对象的模型

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