你能展示你的 HTML 并指出你想要做什么吗?如果我认为我理解您要做什么,以下是我会做的事情。
您可以将sortLinkButton.OnClientClick 设置为指向将调用 Web 方法的 jQuery ajax 函数,但在客户端单击函数中处理会更容易,例如
$('#LinkbuttonClientId').click(function(){ });
在后端代码中包含以下导入
Imports System.Web.Script.Serialization
Imports System.Web.Services
在后端代码中添加一个函数
<WebMethod()> _
Public Shared Function WebMethod(value As string) As String
Try
Dim ReturnString As New List(Of [String])()
'Add functionality - if success set first element of ReturnString = 1 else set to 0
ReturnString.Add("1")
'Add any other value to return
ReturnString.Add("another value")
Dim serializer As New JavaScriptSerializer()
Return serializer.Serialize(ReturnString)
Catch ex As Exception
'Create the same ReturnString variable to return information about an error
Dim ReturnString As New List(Of [String])()
ReturnString.Add("-1")
ReturnString.Add(ex.Message.ToString + ", " + ex.InnerException.ToString)
Dim serializer As New JavaScriptSerializer()
Return serializer.Serialize(ReturnString)
End Try
End Function
将 jQuery 添加到您的页面(放在 <head></head>)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>
添加一个函数来调用按钮单击以使ajax调用webmethod
<script type="text/javascript">
var WebMethodCall = function(value) {
$.ajax({
type: "POST",
url: "[page name].aspx/WebMethod",
data: "{'value' : '" + value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (obj) {
try {
var ret = $.parseJSON(obj.d);
if (ret[0] > -1) {
//run this code after successful return code
}
else {
console.log(ret[1])
}
}
catch (e) {
console.log(e.description || e);
}
},
error: function (ts, ajaxOptions, thrownError) {
console.log(ts.responseText)
}
});
};
</script>
添加一个 jQuery 处理程序(也在前端)
<script type="text/javascript">
$(document).ready(function() {
$("#LinkbuttonClientId").click(function(){
WebMethodCall(value);
//prevent click from submitting page
return false;
});
});
</script>
您可以将两个 js 部分放在一个单独的文件中并包含以进行整理。 'value' 也不是必需的,但它可以向您展示如何将变量传递给 webmethod。可以在 jQuery 中动态创建按钮,如果这样做,则在同一段代码中声明处理函数并使用 bind() 或 on() 例如
$("#LinkbuttonClientId").on("click", function(){ });`
所有这一切对你来说可能是多余的,但这是我对函数进行 ajax 调用而不是使用 .net 更新面板的方式,并且可以轻松处理来自动态元素的事件,而无需提交页面。