问题描述
我使用$ .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});
}
请告知
解决方法
您不能那样做。您正在尝试通过Viewbag从控制器的View中获取数据。
这只能反过来起作用
- 要查看的控制器动作。好吧
- 查看控制器操作。无法完成
- 查看(ajax或其他)控制器操作。无法完成
- Api通话进行查看。无法完成。
只有mvc操作会返回viewbag数据,因为值和页面是在后面的代码中创建的
以这种方式思考。设置视图包时,它在Web服务器上具有一个值。
网络服务器在处理您的请求时,将创建完整的html来回复用户。在其中将使用查看包值。
一旦客户端获取了html页面,就不再有viewbag。该值可能在那里,因此您可以将其回发,但无法以尝试的方式访问它。