2009-11-16 95 views
1

我有一个按钮:按钮没有拿起事件背后的c#代码,我做错了什么?

<button type="submit" class="contact" onclick="click"> 

和我身后的功能C#代码:

protected void click(object sender, EventArgs e) 
{ 
    contact_label.Text = "tester"; 
} 

,并有我的网页上的标签:

<asp:Label id="contact_label"... 

麻烦的是,当我点击按钮'click'功能没有被调用,为什么不呢?我该如何补救?

回答

6

你需要中用runat = server的

试试这个:

<asp:button id="button" runat="server" onclick="click" cssclass="contact"> 

如果你不想使用ASP:按钮

<button id="button" runat="server" OnServerClick="click" > 

下面是一篇文章,解释它: http://ondotnet.com/pub/a/dotnet/2001/06/21/webforms.html?page=2

如果您不想使用服务器端按钮完全可以在page_load事件中检查哪个按钮执行了提交操作(通过request.form)。你不会有一个对象来调用事件处理程序,但是你可以用另一个方法中的代码来执行相同的操作。

+0

啊,你编辑了你的a。同时,好!你很快;-) – Abel 2009-11-17 00:03:22

+0

谢谢,我去了OnServerClick事件。为什么我使用按钮而不是asp:按钮的原因是由于风格问题,因为我正在使用图像。它不是最好的答案,但它是'客户要求'的一部分,所以我正在与此相关。谢谢。 – flavour404 2009-11-17 00:37:48

+0

这就是他们发明'asp:ImageButton' for ... – Abel 2009-11-17 00:46:23

1

你需要多一点然后就runat="server",您需要:

  1. 选择使用ASP.NET ASP:Button类(而不是标准的HTML)
  2. 添加RUNAT = “服务器”
  3. 删除不相关的HTML代码:

这会自动也是一个提交按钮:

<asp:Button 
    CssClass="contact" 
    runat="server" 
    OnClick="click" 
    Text="Hello World" /> 

C#现在将称为:

protected void click(object sender, EventArgs e) 
{ 
    contact_label.Text = "tester"; 
} 

编辑:凯文表明如何能为默认的HTML控件来完成,还解释了如何创建通过使用switch语句额外的“事件”的Page_Load中。我最初误解了这个问题,我会为想要使用ASP.NET控件的人留下我的答案。

+0

这就是问题所在,我不想使用asp:button,有没有办法在没有它的情况下调用c#代码? – flavour404 2009-11-17 00:08:08

+0

为什么你不想使用asp:button?你需要一个服务器端事件处理程序。这需要服务器端控制。如Kevin所示,您可以使用“OnServerClick”(显然)。虽然我没有看到“为什么”,你会想要做那样的事情。 – Abel 2009-11-17 00:17:21

+0

其风格方法。 – flavour404 2009-11-17 00:34:00