通过单击 div 或页面上的任何内容,有多种方法可以执行服务器端方法。第一个提到__dopostback,第二个是在javascript或jQuery中处理点击,并在处理程序中调用函数或在web服务中调用页面方法或在代码后面的页面中调用页面方法。这是处理程序版本:
$("#btn1").click(function() {
$.ajax({
url: '/Handler1.ashx?param1=someparam',
success: function(msg, status, xhr) {
//doSomething, manipulate your html
},
error: function() {
//doSomething
}
});
});
我认为第二个版本更好,因为您可以在没有任何更新面板的情况下异步进行部分回发。缺点是,服务器端代码与您的页面背后的代码是分开的。
处理程序:
public class Handler1: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
var param1= context.Request.QueryString["param1"];
//param1 value will be "someparam"
// do something cool like filling a datatable serialize it with newtonsoft jsonconvert
var dt= new DataTable();
// fill it
context.Response.Write(JsonConvert.SerializeObject(dt));
}
}
如果一切正常,您将在成功部分的 ajax 调用中获得响应,名为“msg”的参数将是您的序列化 JSON 数据表。