从html按钮控件调用服务器端事件

时间:2011-08-25 10:46:34

标签: asp.net html

我正在使用ASP.Net创建一个应用程序,其中我在aspx页面上有一个HTML按钮。

<input type="submit" id="btnSubmit" runat="server" 
   style="background-image:url(App_Themes/default/Images/quiz_class/btn_submit.jpg);
   width:80px; height:29px;" onserverclick="btnSubmit_ServerClick" />

但是当我点击按钮然后它没有在aspx.cs页面上调用btnSubmit_ServerClick事件。

我不想使用asp控制按钮。

请帮助..

6 个答案:

答案 0 :(得分:35)

如果您可以通过指定runat="server"将输入按钮转换为服务器端控件,并且使用asp.net,则可以使用HtmlButton.OnServerClick属性。

<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" />

这应该有效,并在服务器端代码中调用foo_OnClick。 另请注意,基于上面链接的Microsoft文档,您还应该能够使用HTML 4.0标记。

答案 1 :(得分:5)

在您的aspx页面上,使用常见的嫌疑人定义HTML Button元素:runat,class,title等。

如果此元素是数据绑定控件的一部分(即:网格视图等),您可能希望使用CommandName和CommandArgument作为属性。添加按钮的内容和结束标记。

<button id="cmdAction" 
    runat="server" onserverclick="cmdAction_Click()" 
    class="Button Styles" 
    title="Does something on the server" 
    <!-- for databound controls -->
    CommandName="cmdname"> 
    CommandArgument="args..."
    >
    <!-- content -->
    <span class="ui-icon ..."></span>
    <span class="push">Click Me</span>
</button>

在页面后面的代码中,元素将调用将被定义为元素的ID_Click事件函数的处理程序。

protected void cmdAction_Click(object sender, EventArgs e)
{
: do something.
}

使用自定义控件等还有其他解决方案  请注意,我在VS2K8上的项目中使用了这个。

希望这会有所帮助。 享受!

答案 2 :(得分:2)

实现此目的的最简单方法是覆盖RaisePostBackEvent方法。

<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... />

在你的JavaScript中:

raisePostBack = function(){
    __doPostBack("<%=btnRaisePostBack.ClientID%>", "");
}

在您的代码中:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument);

    if (source == btnRaisePostBack)
    {
         //do some logic
    }
}

答案 3 :(得分:0)

请按照本教程:http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/

在旁注:ASP.NET生成一个客户端javascript函数,您可以从自己的函数调用它来执行所需的回发。

- 有关劫持回发事件的更多信息:

答案 4 :(得分:0)

只需在按钮点击事件结束时使用此功能

protected void btnAddButton_Click(object sender, EventArgs e)
{
   ... save data routin 
     Response.Redirect(Request.Url.AbsoluteUri);
}

答案 5 :(得分:0)

您可以如下使用事件处理程序serverclick

// cmdAction是如下所示的HTML按钮的ID

<body>
    <form id="form1" runat="server">
        <button type="submit" id="cmdAction" text="Button1" runat="server">
            Button1
        </button>
    </form>
</body>

// cs代码

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
                cmdAction.ServerClick += new EventHandler(submit_click);  
        }

        protected void submit_click(object sender, EventArgs e)
        {
            Response.Write("HTML Server Button Control");
        }
    }