在我的应用中获取当前记录的用户名

时间:2018-04-12 14:28:47

标签: javascript asp.net razor

我想获取当前登录的用户名并将其显示为我的前端。 目前我有一个名为GetCurrentUser()的函数,当单击一个按钮时会调用它。

<button type="submit" onclick="GetCurrentUser()" style="margin-left: 15px;margin-top:10px; margin-bottom: 5px;background-color: black; "value="Submit">Save Selections</button><br>

function GetCurrentUser() {
var usrName ="@HttpContext.Current.User.Identity.Name.ToString()";
//var usrName = '<%HttpContext.Current.User.Identity.Name %>';
//document.getElementById("UserName").innerHTML = usrName;
console.log(usrName);}

我在控制台日志中获得了follwoingoutput - &gt; @ HttpContext.Current.User.Identity.Name

2 个答案:

答案 0 :(得分:2)

如果您看到“HttpContext.Current.User.Identity.Name”的文字输出,则在丢失服务器上下文后,您的JS函数将在客户端生成。

为您选择情侣:

  1. 通过ajax回拨给您的控制器以获取用户名

  2. 在页面加载时将用户名存储在只读字段中(有点像设置表单值)并在函数调用时通过jquery或js检索值

  3. 将页面加载时的用户名分配给全局js元素,并在函数中使用该元素。

  4. 以下是2和3的示例。在您完全理解为什么问题发生在第一位之前,我认为您不应该担心#1:

        <div class="btn btn-info" onclick="GetCurrentUser()" style="margin-left: 15px;margin-top:10px; margin-bottom: 5px;background-color: black; " value="Submit">Save Selections</div><br>
        <input type="hidden" name="method2" id="method2" value="@System.Security.Principal.WindowsIdentity.GetCurrent().Name">
        @section scripts {
            <script>
                var globalSettingMethod = '@System.Security.Principal.WindowsIdentity.GetCurrent().Name';
                function GetCurrentUser() {
                    alert(globalSettingMethod);
                    alert($('#method2').val());
                }
            </script>
        }
    

答案 1 :(得分:0)

我可以通过在文档末尾传递脚本来使用户登录。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Example.SiteMaster" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form runat="server">
    </form>
    <script>
        var loggedUser = "<%: HttpContext.Current.User.Identity.Name %>";
    </script>
</body>
</html>

我希望您觉得它有用。