2017-01-13 10 views
1

In meiner javascript Datei, ich habe eine Ajax, um alle Liste und iterieren diese Daten und fügen Sie <a id='userID' class='btn'>Assign ID<> zu meiner Liste.ASP.NET: Postback zu Anker hinzufügen

Also, wie fügen Sie einen Postback zu diesen Anker und umleiten es in meiner Methode auf dem Server. Unten ist mein Code, hat aber nicht funktioniert. Wenn ich auf den Achor-Button klicke, wird nur auf die gleiche Seite umgeleitet/aktualisiert, ohne irgendwelche Änderungen vorzunehmen und der Text wurde nicht angezeigt.

<a id='uniqueID' class='btn assignID' href='javascript:void(0);' onclick='javascript:__doPostBack('uniqueID','')'>Assign ID</a> 

protected void Action_assignID(object sender, EventArgs e) 
{ 
    // assign ID action 
    Response.Write("Pass"); 
} 
+0

wenn du sagst es hat nicht funktioniert was genau meinst du? Es hat nicht kompiliert? Es wurde nicht auf dem Server veröffentlicht? oder etwas anderes. Bitte erläutern. – CodingYoshi

+0

@CodingYoshi, aktualisiere ich die Frage. Vielen Dank. – saf21

+0

Warum fügst du den href-Link nicht zu deinem 'a'-Tag hinzu, wenn du ihn erstellst? dann brauchst du kein Javascript 'onclick', da es einfach zum' href' navigieren wird – CodingYoshi

Antwort

1

Sie sollten Ihre Taste geändert werden!

0

Die __doPostBack Methode macht nichts wirklich nichts Besonderes, außer, gut ... führt eine POST-Operation zurück auf die gleiche Seite mit zwei spezifischen Form Argumenten. Der erste Parameter ist der __EVENTTARGET und der zweite Parameter ist der __EVENTARGUMENT.

Die Magie passiert alles in ASP.Net, wo es automatisch Ihre Steuerelemente an Ereignishandler verdrahtet, aber da Sie diese vollständig in JavaScript erstellen, weiß der Server nicht, dass diese Steuerelemente vorhanden sind.

Sie können diese Werte jedoch manuell erfassen und etwas damit tun.

<a id='uniqueID' class='btn assignID' href='javascript:void(0);' onclick="javascript:__doPostBack('uniqueID','Assign ID')">Assign ID</a> 

Und es ist eine gute Idee zu implementieren, um die IPostBackEventHandler Schnittstelle in Ihrem Code-Behind wie unten:

diese Hilfe
public partial class WebForm : Page, IPostBackEventHandler 
{ 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (IsPostBack) 
      { 

      } 
     } 

     public void RaisePostBackEvent(string eventArgument) 
     { 
      // do somethings at here 
     } 
} 

Hoffnung

//Client Side JavaScript: 
__doPostBack('my-event', '42'); 

//Code Behind 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) 
    { 
     var target = Request.Params["__EVENTTARGET"]; 
     var args = Request.Params["__EVENTARGUMENT"]; 

     Target.Text = target; // 'my-event' 
     Argument.Text = args; // '42' 
    } 
}