web-dev-qa-db-ja.com

asp.net mvc内のスクリプトファイルで現在のログインユーザー名を取得する方法

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

ただし、次のエラーが発生します。-'HttpContext' is undefined

11
john Gu

あなたのスクリプトはHttpContextと呼ばれるJavascript変数を探していますあなたのコードは

@HttpContext.Current.User.Identity.Name

かみそりで

だからJavaScriptは

 var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&[email protected]&packageId=' + name;

また、不足している&ユーザー名とpackageIdの間(これらを別々の変数にする場合)

編集:コメントに基づいており、これはjsファイル内にあります(これはOPで見逃したと思います)

2つのオプション:

  1. スクリプトファイルを呼び出すページの変数内にユーザー名を保持することです。このような:

ページ

<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>

JSファイル

....&loginAs='+ usrName + '&packageId=' + name;

オプション2は、ユーザー名をまったく含まず、アクションから取得することです。これは、投稿先のページが同じアプリにある場合の唯一のオプションです

20
Eonasdan

var usrName = '<%[email protected]%>'

1
Annia Martinez
$(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) {

上記のコードは機能するはずです。JavaScriptのフロントでは、サーバーでのみ使用可能なHTTPContentオブジェクトにアクセスできませんが、サーバーコードに配置すると、同じオブジェクトにアクセスできます。

または、サーバーから設定された値で非表示のコントロールを持つことができます

<input type='hidden' id='uid' runat='server'>

サーバーコードは次のようになります

uid.value = HTTPContext.Current.User.Identity.Name;

User.Identity.NameSystem.Web.WebPages.WebPageRenderingBase(つまり、コードはビューファイルにある必要があります)。スクリプトファイルでサーバー側のコードに直接アクセスすることはできません。

 $(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&[email protected]&packageId=' + name;
        $.ajax({
            type: "GET",
            url: fullurl,
            dataType: "JSONP",
            success: function (result) {
//code goes here
1
Mario Sannum

かみそりを使用してビュー(.cshtml)にJavaScript変数を設定し、それをスクリプトファイル(.js)で使用する必要があります。

だからあなたの見解では:

<script type="text/javascript">    
            var userName = '@HttpContext.Current.User.Identity.Name';            
</script>

そしてあなたのスクリプトファイル

   var fullurl = '....loginAs=' + userName  + 'packageId=' + name;
1
dove