使用Jquery Post调用Asp.net方法(包含控件)

时间:2018-01-02 14:02:18

标签: c# jquery asp.net ajax asp.net-mvc

我有一个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会导致错误

  

非静态字段,方法或属性

需要对象引用

您有任何想法或提示吗?

2 个答案:

答案 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