2016-05-04 14 views
0

Ich kann keine Funktion in meiner CSHTML-Seite aufrufen.C# -Funktion Aufruf an cshtml

in meiner cshtml Seite Skript:

<script type="text/javascript" > 
     //var sLoggedInUser = <%# GetSession_LoggedInIdUser() %>; 
     $(document).ready(function() { 
      alert("dom"); 

      var sLoggedInUser = PageMethods.GetSession_LoggedInUserName();   

      alert(sLoggedInUser); 
     }); 


     function btnClick() { 
      alert("btn click"); 
     } 

    </script> 

dom aufmerksam gemacht wird, Button-Klick-Funktion gut funktionieren, aber keinen Wert von sLoggedInUser bekommen. In meinem cs Seite:

protected string GetSession_LoggedInUserName() 
     { 
      SessionConfiguration Obj_Configuration = (SessionConfiguration)Session["Configuration"]; 
      return Obj_Configuration.LoggedInUserName; 
     } 

Ich versuche auch, mit: var sLoggedInUser = <%= PageMethods.GetSession_LoggedInUserName() %> // var sLoggedInUser = GetSession_LoggedInUserName()

+0

Vielleicht statisch sein? – Emanuele

Antwort

0

public static statt geschützt Erklären Sie Ihre Funktion

public static string GetSession_LoggedInUserName() 
{ 
     SessionConfiguration Obj_Configuration = (SessionConfiguration)Session["Configuration"]; 
     return Obj_Configuration.LoggedInUserName; 
} 

und Rufen in cshtml wie diese

<script type="text/javascript" > 
    $(document).ready(function() { 
     var sLoggedInUser = '@PageMethods.GetSession_LoggedInUserName()' 
     alert(sLoggedInUser); 
    }); 
</script> 
0

Methode sollte so sein, static und ein WebMethod

[WebMethod] 
public static string GetSession_LoggedInUserName() 
{ 
... 
} 
2
var sLoggedInUser = PageMethods.GetSession_LoggedInUserName(); 

wird nicht funktionieren, weil Sie nicht eine serverseitige Methode direkt aus Javascript aufrufen können.

var sLoggedInUser = <%= PageMethods.GetSession_LoggedInUserName() %> 

ist näher, aber ausgibt javascript wie

var sLoggedInUser = John Smith 

aber das ist nicht gültig Javascript ist, weil die Zeichenfolge nicht in Anführungszeichen eingeschlossen ist. Sie können jedoch nicht nur darauf verlassen

var sLoggedInUser = '<%= PageMethods.GetSession_LoggedInUserName() %>' 

weil Sie einen Benutzer mit einem Namen wie Paddy O'Brien haben können, die die Zeichenfolge zu früh mit dem Apostroph im Namen (und die Umstellung auf einfache Anführungszeichen enden würden ist nicht wirklich viel sicherer). Es kann auch andere Zeichen geben, über die Sie sich Sorgen machen müssen. Sie sollten daher eine Funktion verwenden, um die Zeichenfolge in Json zu konvertieren. Ich bin mir nicht sicher, was das ist, weil ich mit Razor mit den Hilfsfunktionen gewohnt bin, aber wenn Sie den Zugriff auf die Helfer haben dann wäre es so etwas wie

var sLoggedInUser = <%= Html.Json(PageMethods.GetSession_LoggedInUserName())%>;