кнопка привязки для вызова метода на стороне сервера - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу вызвать метод на стороне сервера, используя кнопку привязки.Я не могу использовать linkbutton, так как хочу создать кнопку привязки в коде позади.

Вот краткий пример кода: я создал div в передней части, и идентификатор ""dv "

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

код:

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

В этом методе я хочу передать идентификатор, вызвав кнопку.Когда кнопка нажата, она выполняет обратную передачу и отправляет идентификатор этому методу.

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>";

1 Ответ

2 голосов
/ 02 февраля 2012

В 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" />
...