asp.net jquery新手问题

时间:2011-05-09 05:19:57

标签: javascript jquery asp.net

我有一个包含文件上传按钮的网络表单。

当我点击按钮上传文件时,后面的C#代码包含我想在jquery执行之前先执行 的事件处理程序中的一些代码。

<script>
    $(document.ready() {
        $('.uploadButton').click(function() {
            // do some additional processing *AFTER* code behind stuff executes
        });
    }
</script>

// In my ASP.NET C# code behind
protected void uploadButton_Click(object sender, EventArgs e)
{
    // Code to fire off here *FIRST* before jquery executes
}

这样的事情可能吗?我知道我可以在我的javascript中实现一个jquery帖子,但由于我已经布置了大部分代码(并且在客户端请求中更改了这个),我只是想知道这样的事情是否可行。

3 个答案:

答案 0 :(得分:0)

您不需要使用jQuery单击处理程序。将代码包装在函数中,并将该函数名称分配给按钮的OnClientClick属性。您可以返回false以防止回发处理。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

答案 1 :(得分:0)

不可能

首先执行OnClick和jQuery事件处理程序,然后才会回发页面,并且您可以在服务器中运行代码。

您可以做的最好的事情是使用$.ajax

这里有一些代码可以帮助你。

在您的代码中

[WebMethod]
public static string uploadButton_Click(string name)
{
   return "Good bye World! by" + name ;
}

在js文件中

$(".uploadButton").click(function(){
   $.ajax({
      type: "POST",
      url: "PageName.aspx/uploadButton_Click",
      data: "{'Name':'Mr.X'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
          alert(msg.d) // will show up an alert box with Good bye world by Mr.X
      }
      });
});

答案 2 :(得分:0)

Ajax是最佳选择。如果你不想使用AJAX,那么你可能会这样做(也许是脏逻辑)

在服务器命中之前不对jQuery做任何事情。在您的代码隐藏

// In my ASP.NET C# code behind
protected void uploadButton_Click(object sender, EventArgs e)
{
    // Code to fire off here *FIRST* before jquery executes

    string strClientQuery = @"<script type="javascript"> $(document.ready() {
        $('.uploadButton').click(function() {
        // do some additional processing *AFTER* code behind stuff executes
        });
       }  </script>";
    Response.Write(strClientQuery);
}

如果要将脚本严格保留在客户端(即aspx页面),则在aspx中将查询创建为字符串并将其作为输入传递给页面(通过_EventTarget并在代码隐藏中获取字符串并做response.write
如果你发现答案很有用,请花几秒钟给它评分