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

How to get the value of ViewBag in C# (MVC or Core) when calling API?

我使用 $.Ajax 调用 C# API 来获取数据,在 Index Action 的 Home controller 中我定义了一个 ViewBag:

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

在 Get API 操作中:

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

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

请指教

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

反之亦然

  • 要查看的控制器操作。好的
  • 查看控制器操作。无法完成
  • 查看(ajax 或其他)控制器操作。无法完成
  • Api来电查看。做不到。

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

这样想。当您设置 viewbag 时,它在您的网络服务器上有一个值。

网络服务器在处理您的请求时,将创建一个完整的 html 来回复用户。在那里它将使用视图包值。

一旦客户端获得html页面,就没有viewbag了。该值可能存在,因此您可以 post 恢复它,但您无法按照您尝试的方式访问它。