如何在我的asp.net mvc中的脚本文件中获取当前登录用户名

joh*_* Gu 11 javascript asp.net-mvc asp.net-mvc-4

我有一个脚本文件调用JSON API,我需要发送当前登录用户名作为调用的一部分.我尝试了以下方法: -

    $(document).ready(function () {
        var name = prompt("Please enter your packageid", "test");

        var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + HttpContext.Current.User.Identity.Name + 'packageId=' + name;
        $.ajax({
            type: "GET",
            url: fullurl,
            dataType: "JSONP",
            success: function (result) {
//code goes here
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误: - 'HttpContext'未定义

Eon*_*dan 18

您的脚本正在寻找一个名为Your code 的Javascript变量HttpContext

@HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

在剃刀

所以javascript成了

 var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=@HttpContext.Current.User.Identity.Name&packageId=' + name;
Run Code Online (Sandbox Code Playgroud)

&如果您打算将它们作为单独的变量,那么您也会在用户名和packageId之间丢失

编辑:基于你的评论,这是在一个js文件里面(我想我在OP中错过了)

两种选择:

  1. 是在调用脚本文件的页面上的变量中保存用户名.像这样:

<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>
Run Code Online (Sandbox Code Playgroud)

JS文件

....&loginAs='+ usrName + '&packageId=' + name;
Run Code Online (Sandbox Code Playgroud)

选项二是根本不包括用户名,只需从Action获取.如果您要发布到的页面位于同一个应用程序中,则这只是一个选项