2012-02-02 67 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