簡體   English   中英

使用ViewBag-ASP.NET MVC

[英]using ViewBag - asp.net mvc

在asp.net mvc項目中,我在index.cshtml文件的頂部

$.ajax({
    url: '@Url.Action("getLoggedUser", "Home")',
    dataType: "html",
    "async": true,
    type: "GET",
    success: function (data) {

    },
});

它使用的方法就是這一方法,即在HomeController上

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部分中使用

然后再次在我的index.cshtml上我有另一個腳本

$(document).ready(function () {
    setTimeout(function () {
        console.log("TIMER!");
        userRole = '@ViewBag.LoggedUser';
        alert(userRole);
    }, 5000);

我的問題是警報顯示一個空消息,例如ViewBag.LoggedUser沒有任何內容。 我使用ViewBag錯誤嗎?

您要重新加載頁面嗎? 如果不是,則您的ViewBag具有與呈現頁面時相同的內容。 Razor僅在創建html頁面時才從ViewBag渲染文本,如果您不重新加載頁面,它將始終為空。 您必須將某個對象(例如json)中的數據返回給ajax請求,然后才能使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM