如何在 MVC ASP.NET 外部 js 文件中使用 jQuery 获取会话变量的值

本文关键字:jQuery 获取 会话 变量 文件 MVC ASP NET js 外部 | 更新日期: 2023-09-27 17:55:27

我有 ASP.NET MVC5 项目,其中我使用 setSession() 在控制器中设置会话值,这是 userId。然后我需要在.js文件中检索或获取该值(并将其设置为 TextBox)

但无法.js文件中获取该值。

以下是我的.js文件代码

function populateUser() {
        debugger;
        $.ajax({
            type: "GET",
            url: '/UserProfile/SetSessionValues',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            success: function (data) {
                if (data) {
                    var user = $.session.get("UserName");
                    $("#txtUserName").val(user);  
                                }
            },
            error: function (msg) {
                alert("Error :" + msg.responseText);
            },
        });
    }

如何在 MVC ASP.NET 外部 js 文件中使用 jQuery 获取会话变量的值

在您的控制器中:-

ViewBag.myVar = HttpContext.current.Session["UserName"].ToString();

您可以将参数指定为控件的值

<input type="hidden" value = "@ViewBag.myVar" id="myHiddenVar" /> 

并轻松获取JS文件

alert($('#myHiddenVar').val());

看看 RazorJS。可以在 Nuget 包管理器中找到它。

它允许您在.js文件中使用类似剃须刀的标签(例如:@data)。

你可以像这样使用 JavaScript 变量:

.HTML:

<head>
    ...
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    @RenderSection("my_script_variables", false)
    <script src="@Url.Content("~/Scripts/external.js")" type="text/javascript"></script>
    ...
</head>

剃刀:

@Section my_script_variables {
    <script type="text/javascript">
            var variable1 = '@myVar1',
            variable2 = '@Session["myVar2"]',
            variable3 = '@ViewBag.myVar3';
        </script>
}

外部 JS:

alert(variable1 + ' ' +variable2 +' '+ variable3);

此外,您可以按照 Neel 的建议使用隐藏变量。

通过此链接尝试解决方案:

将会话或视袋值传递给 JS 文件