2016-04-25 6 views
-1

Ich versuche, das gesamte Model-Objekt mit einem anderen Parameter zu js Funktion launchMyActivity() zu übergeben. aber die Funktion bekommt es nicht. Als ich die tat es gibt nicht identifiziert.nicht in der Lage zu übergeben Model-Objekt zu JavaScript-Funktion

Ich habe andere Dinge ausprobiert, aber nichts hat funktioniert. Referred this but didnt worked

Ich bin nicht sicher, was mit meiner Implementierung falsch ist.

Modell:

public class RequestDTO 
{ 
    public HttpRequestBase RequestDto { get; set; } 
    public List<User> Users { get; set; } 
    public string ActionId { get; set; } 
    public string UserSampleID { get; set; } 
} 

Ausblick:

@model RequestDTO 
<body> 
     @Scripts.Render("~/bundle/js/Area/SelectedStudentActivity") 
     <div class='popOver' style="z-index: 1012;"> 
      <div id='popOverMsg'>Select the student you want to Launch this Activity for:..</div><br /><br /> 
      @foreach(var user in Model.Users) 
      {     
       <a id="selectedAnchor" data-id="@user.id" style="cursor:pointer" onclick="launchMyActivity(@user.UserID,@Model)">@user.name</a><br /> 
      } 
     </div> 
</body> 

JS:

function launchMyActivity(studentSISId, requestDTO) 
{ 
    alert("Lenght : " + requestDTO.length); //I get undefined here 

    //Below this I need to make AJAX call and pass this requestDTO object. 
} 
+0

Modell ist ein C# -Objekt, aber Sie versuchen, es in Javascript zu übergeben. Sie müssen es jsonifizieren, damit JavaScript es versteht. – nurdyguy

+0

Versuchen Sie Folgendes: http://stackoverflow.com/questions/6201529/turn-c-sharp-object-into-a-json-string-in-net-4 – nurdyguy

+0

Verwenden Sie CSHTML ?? Probieren Sie diese Funktion aus: launchMyActivity (studentSISId) { alert ("Länge:" + @ Model.length); } – Shan

Antwort

0

Sie sollten nicht 01 werden vorbeizu Javascript. Zuallererst, wie Sie herausgefunden haben, wird das nicht funktionieren. Ihr C# -Code wird von .Net Runtime auf Ihrem Webserver ausgeführt. Javascript wird vom Webbrowser auf dem Client-Rechner ausgeführt. Diese beiden sind völlig unterschiedliche Ausführungssysteme und Sie können nicht wirklich zwischen den beiden Semantik übergeben.

HttpRequesBase unter Berufung auf MSDN „Dient als Basisklasse für Klassen, die ASP.NET aktivieren, indem Sie einen Client während einer Web-Anforderung geschickt, um die HTTP-Werte zu lesen“. Sie haben kein asp.net in Ihrem Browser und diese Klasse zusammen mit ihren Methoden macht keinen Sinn auf dem Client.

Was Sie stattdessen tun müssen, ist Ihre Modell zu definieren. Es ist Ihr Modell, das Sie zwischen Server und Client übergeben möchten. Extrahieren Sie alle für den Client relevanten Informationen aus HttpRequesBase und legen Sie sie im Modell ab. Ein Modell ist normalerweise eine einfache Klasse ohne irgendein Verhalten (Methoden) und hat nur eine Anzahl von Eigenschaften, die trivialerweise nach json serialisiert sind. Es gibt ziemlich viele leicht zu findende Informationen zu diesem Bit für solche Modelle.

Verwandte Themen