Я сталкивался с этой проблемой и использовал комбинацию решений Dekker, Homan и Gruber. Весь кредит идет им.
Мне нужно было иметь возможность изменить сеанс, когда пользователь установил флажок. Поскольку метод страницы должен быть статическим, он ограничен в том, что вы можете делать внутри него, и я не смог изменить сессию. Поэтому я использовал jQuery для вызова статического метода на родительской странице пользовательского элемента управления, который вызывал метод веб-службы, выполняющий нужную мне работу.
Файл Javascript пользовательского элемента управления .ascx
function chkSelectedChanged(pVal) {
//called when user clicks a check box
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: '{ "p1":' + pVal+' }',
url: "ParentPage.aspx/StaticPageMethod",
success: function (msg) {
//alert('it worked');
},
error: function (msg) {
alert('boom' + msg);
}
});
}
Код родительской страницы за файлом .aspx.cs
[WebMethod]
public static void StaticPageMethod(string pVal)
{
var webService = new GridViewService();
webService.GridCheckChanged(pVal);
}
Веб-сервис .asmx
[WebService(Namespace = "")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class GridViewService : System.Web.Services.WebService
{
[WebMethod]
public void GridCheckChanged(string pVal)
{
//Do Work
}
}