it-swarm.com.de

Wie erhalte ich den aktuellen Login-Benutzernamen in meiner Skriptdatei in meinem asp.net mvc

Ich habe eine Skriptdatei, die die JSON-API aufruft, und ich muss den aktuellen Anmeldenamen als Teil des Aufrufs senden. Ich habe folgendes versucht: -

    $(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

Es wird jedoch der folgende Fehler ausgegeben: - 'HttpContext' ist undefined

10
john Gu

Ihr Skript sucht nach einer Javascript Variable mit dem Namen HttpContext Ihr Code sollte sein

@HttpContext.Current.User.Identity.Name

in Rasiermesser

so wird das Javascript

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

Sie fehlen auch und & zwischen dem Benutzernamen und packageId, wenn Sie beabsichtigen, dass sie separate Variablen sind 

Edit : basierend auf deinem Kommentar und dies innerhalb einer js-Datei (was ich vermute, dass ich im OP vermisst habe)

Zwei Optionen:

  1. Soll den Benutzernamen in einer Variablen auf der Seite enthalten, die die Skriptdatei aufruft. So was:

Seite

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

JS-Datei

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

Option 2 ist, den Benutzernamen überhaupt nicht anzugeben und einfach von der Aktion abzurufen. Dies ist nur eine Option, wenn sich die Seite, auf der Sie eine Mitteilung verfassen, in derselben App befindet

14
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) {

der obige Code sollte funktionieren. An der Javascript-Frontseite haben Sie keinen Zugriff auf das HTTPContent-Objekt, das nur auf dem Server verfügbar ist. Wenn Sie sie jedoch in einen Servercode einfügen, sollten Sie darauf zugreifen können.

oder Sie können ein verstecktes Steuerelement mit dem vom Server festgelegten Wert haben

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

servercode würde aussehen

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

Sie können nur User.Identity.Name verwenden, der von System.Web.WebPages.WebPageRenderingBase abgeleitet ist (dh der Code sollte sich in einer View-Datei befinden). Sie können nicht direkt auf serverseitigen Code in Skriptdateien zugreifen.

 $(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

Sie müssen eine JavaScript-Variable in Ihrer Ansicht (.cshtml) mit dem Rasierer einstellen und diese dann in Ihrer Skriptdatei (.js) verwenden.

Also aus deiner Sicht:

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

und dann deine Skriptdatei

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