我有一个asp.net方法,它清除了一个asp:DropdownList控件。
[System.Web.Services.WebMethod]
public void clear()
{
cloneSrcEnvList.Items.Clear();
}
我的目标是使用JQuery / Ajax请求调用此函数:
<script type="text/javascript">
function BtnClick(){
$.ajax({
type: "POST",
url: "Tools.aspx/clear",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
console.log(msg);
}
});
}
</script>
但由于静态“ 500(内部服务器错误)”,我收到此错误。如果我将clear方法声明为Static,则DropDownlist会导致错误
非静态字段,方法或属性
需要对象引用
您有任何想法或提示吗?
答案 0 :(得分:0)
ASP.NET网页中的控件无法以这种方式更改和保留。静态Web方法中的上下文对页面的执行一无所知。您可以将页面包装在<asp:UpdatePanel>
控件中并触发回发以清除它。该页面会认为这是一个正常的回发,但用户只能看到一个AJAX请求/响应......
不幸的是,这是ASP.NET Web表单和AJAX的挑战之一。
答案 1 :(得分:0)
要使用AJAX调用该方法,我们需要使用static关键字声明一个函数。 无论何时使用static关键字声明任何方法,它都没有控件的定义,因此您无法在此方法中找到任何服务器控件引用。
请参阅以下链接
https://www.aspsnippets.com/Articles/Calling-server-side-function-from-JavaScript-in-ASP.Net.aspx