2017-01-13 32 views
1

在我的javascript文件中,我得到一個ajax來獲取所有列表並迭代這些數據,並將<a id='userID' class='btn'>Assign ID<>附加到我的列表中。ASP.NET:添加回發錨

那麼,如何做一個添加回發這些錨點,並將其重定向到我的方法在服務器中。下面是我的代碼,但沒有工作。當我單擊achor按鈕時,它只是重定向/刷新到同一頁面而不做任何更改並且不顯示文本。

<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

當你說它沒有工作你究竟是什麼意思?它沒有編譯?它沒有發佈到服務器?或者是其他東西。請具體說明。 – CodingYoshi

+0

@CodingYoshi,我更新了這個問題。謝謝。 – saf21

+0

爲什麼不在創建時將href鏈接添加到「a」標籤?那麼你不需要javascript'onclick',因爲它只會導航到'href' – CodingYoshi

回答

1

你應該改變你的按鈕:

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

而且它的實現IPostBackEventHandler界面在你的代碼隱藏,如下一個好主意:

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 
     } 
} 

希望這有助於!

0

__doPostBack方法真的沒有做任何事情,除了,嗯......執行POST操作,回到同一頁面有兩個具體形式參數的特殊。

第一個參數是__EVENTTARGET,第二個參數是__EVENTARGUMENT

神奇的一切都發生在ASP.Net中,它自動將您的控件連接到事件處理程序,但由於您完全使用JavaScript創建它們,因此服務器不知道這些控件存在。

但是,您可以手動獲取這些值並對它們進行操作。

//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' 
    } 
}