我在c#codebehind中创建了一个按钮,并尝试向其添加事件监听器,但问题是如果我使用:
{
HtmlGenericControl dodaj = new HtmlGenericControl("button");
dodaj.InnerText = "something";
dodaj.Attributes.Add("runat", "server");
dodaj.Attributes.Add("type", "submit");
dodaj.Attributes.Add("onclick","addKosarica");
newDivInfo.Controls.Add(dodaj);
sadrzaj.Controls.Add(newDivInfo);
this.Controls.Add(sadrzaj);
}
protected void addKosarica(object sender, EventArgs e)
{
Response.Redirect("www.google.com"); //just to see if it triggers
}
我明白了:
“未捕获的ReferenceError:未定义addKosarica HTMLButtonElement.onclick“
尝试使用Google搜索错误,这是关于javascript ...
然后在谷歌搜索后,我尝试了:
{
Button dodaj = new Button;
dodaj.Text = "something";
dodaj.Click += new EventHandler("addKosarica");
newDivInfo.Controls.Add(dodaj);
sadrzaj.Controls.Add(newDivInfo);
this.Controls.Add(sadrzaj);
}
protected void addKosarica(object sender, EventArgs e)
{
Response.Redirect("www.google.com");//just to see if it triggers
}
我得到了
“Button”类型的“控制'ctl07'必须放在表单标签内 使用runat = server。“
这是我的aspx代码:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="11001.aspx.cs" Inherits="_11001" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
</asp:Content>
(它并不多,因为我动态添加所有内容,除了按钮onclick处理程序之外一切正常...)
拜托,有人可以告诉我如何让这个工作......
编辑: sadrzaj是一个包含我正在添加的所有这些元素的div。 我将它们添加到从Page_Load()
调用的函数中答案 0 :(得分:0)
很抱歉,您在按钮服务器端和按钮客户端之间感到非常困惑。
第一个问题是:为什么不在aspx中添加按钮?
你需要循环一个集合并创建许多类似的按钮吗?您可以使用Repeater。
然后,阅读你的代码......你有一个母版页(我希望包含一个标签形式runat="server"
)。您必须将ID添加到要添加的控件中。
在您使用
创建onclick客户端(所以javascript)的第一段代码中dodaj.Attributes.Add("onclick","addKosarica");
所以你可以删除:
protected void addKosarica(object sender, EventArgs e)
{
Response.Redirect("www.google.com");//just to see if it triggers
}
并在aspx文件中添加函数addKosarica()。
在第二段代码中,正确的代码是:
dodaj.Click += myButton_Click;
正确的事件是
protected void myButton_Click(object sender, EventArgs e)
并且您可以在+ =
之后在Visual Studio中单击选项卡自动创建两次我建议不要使用它。直接控制:它是指页面。您可以在Content标记中添加PlaceHolder控件或Panel控件,并向其添加控件。如果您使用this
而不是Panel
或PlaceHolder
,请尝试使用this.Form.Controls.Add
您可以参考:
答案 1 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
Button dodaj = new Button();
dodaj.Text = "Click Me!";
dodaj.Attributes.Add("runat", "server");
dodaj.Attributes.Add("type", "submit");
dodaj.Attributes.Add("onclick", "addKosarica");
newDivInfo.Controls.Add(dodaj);
dodaj.Click += Dodaj_Click1;
}
private void Dodaj_Click1(object sender, EventArgs e)
{
Response.Write("Ok");
}
aspx代码
<div runat="server" id="newDivInfo">