繁体   English   中英

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

[英]How to get value of session variable using jQuery in external js file in ASP.NET MVC

我有一个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);
            },

        });
    }

在您的控制器中:

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建议的“隐藏变量”。

在此链接上尝试解决方案:

将Session或Viewbag值传递给JS文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM