我正在测试如何对用户控件方法进行AJAX调用。通过做一些研究,我知道我们不能直接公开JavaScript代码可以使用的用户控制方法。所以我在 aspx.cs 文件中创建了一个公共静态方法:
Javascript代码:
function myJavascriptFunction(param1) {
$.ajax({
type: ""POST"",
contentType: ""application/json; charset=utf-8"",
url: "Greetings.aspx/GreetingsTest",
data: ""{'newValue': param1}"",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
}
ASPX.cs的C#代码:
[System.Web.Services.WebMethod]
public static void GreetingsTest(string newValue)
{
var greetingsProcessor = new GreetingsProcessorUserControl();
greetingsProcessor.EnableDropDownList();
}
用户控件的C#代码(ascx.cs):
public void EnableDropDownList()
{
greetingDropDownList.Enabled = true;
}
AJAX请求调用以及ASPX.CS方法中的公共方法工作正常。调试时我可以到达GreetingsTest方法。但是,在执行这行代码时:
greetingsProcessor.EnableDropDownList();
要启用下拉列表,我的 greetingDropDownList 会获得nullable object
的例外。
我猜测为什么会发生这种情况是因为在创建GreetingsProcessorUserControl的新实例时:
var greetingsProcessor = new GreetingsProcessorUserControl();
在从AJAX请求进行调用时,是否有人知道如何为用户控件保留当前对象?