2012-02-02 68 views
0

我想使用錨點按鈕調用服務器端方法。我不能使用linkbutton,因爲我想在代碼隱藏中創建錨點按鈕。錨點按鈕調用服務器端方法

下面是一個簡單的代碼示例: 我在前端創建一個div與ID爲「DV」

<div id ="dv" runat="server"> 

後面的代碼:

dv.InnerHtml = "<a href=\"javascript:void(0);\" id=" + dxm.Id + " onclick=\"__doPostBack('" + dxm.Id + "', '');\" > </a>"; 

在這種方法中,我想通過調用按鈕傳入ID。當按鈕被點擊時,它將執行回發並將ID發送到此方法。

protect void PopupBox(string id) 
{ 
    //using the id get the data. 
    //show modalpopup box 
} 

我不想使用linkbutton。我用div作爲例子。我使用的是用樹狀這裏面我將使用節點文本來創建一個錨點按鈕

node.text = "<a href=\"javascript:void(0);\" id=" + dxm.Id + " onclick=\"__doPostBack('" + dxm.Id + "', '');\" > </a>"; 

回答

2

在asp.net版本4回發的這個「黑客」行爲不會因爲額外的安全檢查工作的那個版本4包括。使用asp.net控件執行此操作的最佳方法是執行控件的動態加載。這裏是我剛剛檢查和工作的一些代碼。

protected void Page_Load(object sender, EventArgs e) 
{ 
    // create the control dynamically 
    LinkButton lbOneMore = new LinkButton(); 

    // the text and the commands 
    lbOneMore.Text = "One more click";   
    lbOneMore.CommandArgument = "cArg"; 
    lbOneMore.CommandName = "CName"; 

    // the click handler 
    lbOneMore.Click += new EventHandler(lbOneMore_Click); 

    // and now add this button link to your div 
    DivControl.Controls.Add(lbOneMore); 
} 

// here you come with the click, and the sender contains the commands 
void lbOneMore_Click(object sender, EventArgs e) 
{ 
    txtDebug.Text += "<br> Command: " + ((LinkButton)sender).CommandArgument; 
} 

在asp.net頁面:

<div runat="server" id="DivControl"></div> 
<asp:Literal runat="server" ID="txtDebug" /> 
+0

我不想使用的LinkBut​​ton。我用div作爲例子。我在裏面使用樹形圖,我將使用節點文本創建錨點按鈕 – user929153 2012-02-02 12:43:36

+0

@ user929153我無法理解你,或你我。在任何情況下,你都不能在發佈之前進行破解,首先聲明它(至少在asp.net 4上)你在這個解決方案中不喜歡什麼?是讓你問什麼。它會創建你在代碼背後提出的問題。 ! – Aristos 2012-02-02 12:46:53