调用API时如何在C#MVC或Core中获取ViewBag的值?

问题描述

我使用$ .Ajax调用C#API来获取数据,在“索引操作”的Home控制器中,我定义了一个ViewBag:

public IActionResult Index()
{
     ViewBag.UserInfo = "TEST";
     return View();
}

在“获取API操作”中:

[HttpGet("Get")]
public IActionResult Get()
{ 
     var x = ViewBag.UserInfo;
     return Json(new { result = x});
}

但是当我调用API并调试代码时,我发现“ x”为空

请告知

解决方法

您不能那样做。您正在尝试通过Viewbag从控制器的View中获取数据。

这只能反过来起作用

  • 要查看的控制器动作。好吧
  • 查看控制器操作。无法完成
  • 查看(ajax或其他)控制器操作。无法完成
  • Api通话进行查看。无法完成。

只有mvc操作会返回viewbag数据,因为值和页面是在后面的代码中创建的

以这种方式思考。设置视图包时,它在Web服务器上具有一个值。

网络服务器在处理您的请求时,将创建完整的html来回复用户。在其中将使用查看包值。

一旦客户端获取了html页面,就不再有viewbag。该值可能在那里,因此您可以将其回发,但无法以尝试的方式访问它。