Мне нужно вызвать клиентский код ASP.Net на стороне клиента. Поскольку я в пользовательском элементе управления ascx, я не могу использовать [webmethod] + PageMethods, поскольку это работает только на страницах ASPX.
Следующая опция, которая, как я думал, сработает, - это создание клиентского обратного вызова. Используя этот метод, клиент успешно вызовет код сервера, но клиент не получит обратный вызов. Вот мой код для настройки блоков скриптов на стороне клиента:
protected void Page_Load(object sender, EventArgs e)
{
String strJSCallbackPrefix = this.ClientID;
ClientScriptManager cm = Page.ClientScript;
String cbReference = cm.GetCallbackEventReference(this, "arg", strJSCallbackPrefix + "ReceiveServerData", "context");
String callbackScript = "function " + strJSCallbackPrefix + "CallServer(arg, context){" + cbReference + "; }";
cm.RegisterClientScriptBlock(this.GetType(), strJSCallbackPrefix + "CallServer", callbackScript, true);
String strReceiveServerData = "function " + strJSCallbackPrefix + "ReceiveServerData(arg, context){document.getElementById('btnCancel').value='thisandthat';}";
cm.RegisterClientScriptBlock(this.GetType(), strJSCallbackPrefix + "ReceiveServerData", strReceiveServerData, true);
Button2.OnClientClick = strJSCallbackPrefix + "CallServer('test message',1); " + "return false;";
}
public string GetCallbackResult()
{
return returnValue;
}
public void RaiseCallbackEvent(string eventArgument)
{
returnValue = "11223" + eventArgument;
}
У кого-нибудь есть идеи, почему клиент не перезванивает?