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 恢复它,但您无法按照您尝试的方式访问它。
我使用 $.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 恢复它,但您无法按照您尝试的方式访问它。