ASP.Net Client-callback не работает из-под контроля ASCX - PullRequest
0 голосов
/ 09 июля 2010

Мне нужно вызвать клиентский код 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;
}

У кого-нибудь есть идеи, почему клиент не перезванивает?

1 Ответ

0 голосов
/ 09 июля 2010

Вы можете просто добавить PageMethod на содержащую aspx страницу.Неважно, где он находится, поскольку вы все равно не можете взаимодействовать с содержимым page / usercontrol из PageMethod.

Просто будьте осторожны, это может стать кошмаром обслуживания, если пользовательский контроль используется на многих страницах.

...