我有一个包含文件上传按钮的网络表单。
当我点击按钮上传文件时,后面的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帖子,但由于我已经布置了大部分代码(并且在客户端请求中更改了这个),我只是想知道这样的事情是否可行。
答案 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
如果你发现答案很有用,请花几秒钟给它评分