jquery span按钮说“Button1_Click未定义”

时间:2012-02-13 21:49:06

标签: c# jquery

using Visual.Web.Developer.2010.Express;
using SQL.Server.Management.Studios.R2.Express;

我正在尝试做的是,点击一个按钮时会得到一个按钮来运行一些C#..听起来很简单,对吧?我被困在这个部位。

我在HTML输入中的用户按键时创建了一个span(Jquery UI按钮)。一旦他们点击了跨度,就会保存用户输入的内容并将其发送到数据库......好吧,还没有。我正在构建这个,我被困在这一部分。

可以在span标签中附加按钮点击通过属性,正确吗?

<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span>



C#

protected void Button1_Click(object sender, EventArgs e)
{
    Console.WriteLine("Hello World");
}


看起来很简单吧?当我在调试中运行它时,Firebug读取“Button1_Click未定义”



请给我一些见解!

我的HTML / Javascript代码

<script type="text/javascript">
    $(document).ready(function () {

        $('.hexen').after('<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span>')// ui icon

    .keypress(function () {
        $(this).next('.saveButton').show();
    }); //adds ui icon

        $('.ui-state-default').hover(
    function () {
        $(this).addClass('ui-state-hover');
    }, function () {
        $(this).removeClass('ui-state-hover');
    }); //ui icon hover

        $('.saveButton').click(function () {
            var id = $(this).prev().attr('id'); //used in the "data" attribute of the ajax call
            var value = $(this).prev().val(); //used in the "data" attribute of the ajax call

            $.ajax({
                type: "POST",
                url: "Default.aspx",
                data: "{Id: " + id + ", Value: " + value + "}",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    console.log(data);
                }
            });
            $(this).hide();
        }); //runs ajax call and removes ui-icon after .saveButton is clicked

    }); //end .ready
</script> 

<input type="text" class="hexen" id="investigate1"/><br />
<input type="text" class="hexen" id="investigate2"/><br />
<input type="text" class="hexen" id="investigate3"/><br />
<input type="text" class="hexen" id="investigate4"/><br />
<input type="text" class="hexen" id="investigate5"/>



提前谢谢!

3 个答案:

答案 0 :(得分:2)

Button1_Click是服务器端按钮单击处理程序,您无法使用onclick属性从客户端调用它。

onclick将始终在客户端JavaScript代码中查找处理程序或方法。

您必须使用Asp.Net按钮控件,该控件将在页面上呈现必要的方法以执行回发到服务器。

点击Asp.Net按钮后,它会将当前页面提交给服务器,并向asp.net框架提供必要的详细信息,以便它执行所需的按钮点击处理程序。

E.g。您可以像这样使用LinkButton控件并指定OnClick属性到Button1_ClickOnClientClick属性来调用任何客户端javascript方法。

<asp:LinkButton Text="Click me!" 
      OnClick="Button1_Click" runat="server" 
      OnClientClick="clientSideJavaScriptFunction()" />

答案 1 :(得分:1)

从它的外观来看,你不需要跨度的'onclick'处理程序,因为你无论如何都要在javascript中绑定它:

$('.saveButton').click(....);

此外,您在空间中获得的onclick处理程序引用了C#事件的服务器端处理程序,而不是javascript事件的客户端处理程序。 onclick的值必须是javascript中客户端代码可用的函数。如果你想点击一个按钮将数据发布到服务器,那么你需要在javascript中做一个AJAX请求(就像你一样)。

最后,您尝试在javascript中绑定到.saveButton的事件处理程序将无法正常工作,因为您在文档加载完成之前尝试绑定它(可能)。在after上调用.hexen后,将事件绑定移动到document.ready块中。

答案 2 :(得分:0)

我不确定它在C#中是如何工作的,但我认为你需要在ajax调用的URL中引用该函数。

url: "Default.aspx/Button1_Click",

Button1_Click可能必须是公共职能才能发挥作用。

编辑:查看本页“使用jQuery调用页面方法”部分:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/