using ViewBag - asp.net mvc
本文关键字:net mvc asp ViewBag using | 更新日期: 2023-09-27 18:11:56
在一个asp.net mvc项目中,我有这个在我的索引顶部。cshtml文件
$.ajax({
url: '@Url.Action("getLoggedUser", "Home")',
dataType: "html",
"async": true,
type: "GET",
success: function (data) {
},
});
它使用的方法是这个,它在home控制器上
public async Task getLoggedUser()
{
try
{
BenchesService benchService = new BenchesService();
UserTest LoggedUser = new UserTest();
string name = Request.RequestContext.HttpContext.User.Identity.Name;
name = name.Substring(name.LastIndexOf('''') + 1);
LoggedUser = await benchService.getCurrentUser(name);
role = LoggedUser.role;
ViewBag.LoggedUser = LoggedUser.role;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
使用getCurrentUser(name)对服务器执行GET操作;并且返回一个带有用户信息的json,我用它来填充UserTest对象(我用break检查并且LoggedUser正确填充)。
我想保存用户角色,在html/javascript部分使用
然后在我的索引上。我有另一个脚本
$(document).ready(function () {
setTimeout(function () {
console.log("TIMER!");
userRole = '@ViewBag.LoggedUser';
alert(userRole);
}, 5000);
我的问题是警报显示一个空消息,就像ViewBag.LoggedUser
什么都没有。我用错ViewBag
了吗?
你在重新加载页面吗?如果不是,你的ViewBag有相同的内容,就像在页面渲染的时刻。Razor只在创建html页面时从ViewBag中渲染文本,如果你不重新加载页面,它将始终为空。你必须返回你的数据在一些对象(例如json) ajax请求,然后你可以使用它。