2016-07-15 5 views
0

Default.aspx:Programatically добавлена ​​кнопка HTML - OnServerClick не работает

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Test Case</title> 
    </head> 
    <body> 
     <div id="testdiv" runat="server"></div> 
    </body> 
</html> 

Default.aspx.cs:

using System; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     testdiv.InnerHtml = "<input type=\"button\" runat=\"server\" OnServerClick=\"Test_Click\"/>"; 
    } 

    protected void Test_Click(object sender, EventArgs e) 
    { 
     testdiv.InnerHtml = "REGISTERED CLICK!"; 
    } 
} 

Я хочу Test_Click будет запущен на сервере w при нажатии кнопки, но это не так.

Я пробовал поместить его в форме на стороне сервера, но он все еще не работает.

+0

Вы пробовали OnClick вместо OnServerClick? – Kami

+0

OnClick - клиентская сторона. Мне нужна серверная. –

+1

Добавив runtat = "server", вы уже сделали кнопку на стороне сервера, поэтому OnClick должен вызывать серверные методы. – Kami

ответ

4

попробовать этот способ,

protected void Page_Load(object sender, EventArgs e) 
{ 
    var button = new Button {ID = "Button1", Text = "Test Button"}; 
    button.Click += button_Click; 
    PlaceHolder1.Controls.Add(button); 
} 

private void button_Click(object sender, EventArgs e) 
{ 
    testdiv.InnerHtml = "Button1 is clicked"; 
} 
+0

Я не могу этого сделать. Я создаю '

' отложенным способом. –

+1

Не имеет значения, как вы создаете свою таблицу, просто переместите созданный элемент управления в javascript туда, где вам нужно. – Mert

+0

Это не очень элегантно. –

Смежные вопросы