锚按钮调用服务器端方法

本文关键字:方法 服务器端 调用 按钮 | 更新日期: 2023-09-27 18:22:19

我想使用锚点按钮调用服务器端方法。我不能使用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
}

我不想使用链接按钮。我用div作为例子。我正在使用一个树视图,其中我将使用节点文本创建一个锚按钮

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

锚按钮调用服务器端方法

在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" />