пытается __dopostback из jscript, RaisePostBackEvent не стреляет - PullRequest
2 голосов
/ 23 сентября 2011

Я пытаюсь следовать предложению здесь: Вызов функции ASP.NET из JavaScript?

Но это не работает для меня.Страница действительно отправляет назад.но мой RaisePostBacKEvent никогда не срабатывает.Я делаю это в пользовательском контроле, а не на странице:

public partial class MyTreatment : System.Web.UI.UserControl, IPostBackEventHandler

Кто-нибудь есть какие-либо предложения о том, как заставить это работать?

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 сентября 2011

Указываете ли вы ClientID вашего элемента управления, в отличие от ClientID страницы (как в примере из другого вопроса SO, на который вы ссылались)?

Если нет, то это объясняет, почему страница отправляет обратно, но не вызывает метод RaisePostBack в вашем элементе управления.

Чтобы ссылаться на ClientID вашего элемента управления, вызовите функцию __doPostBack следующим образом:

__doPostBack("<%= yourControlID.ClientID %>", "an argument");

В качестве примечания: если ваш элемент управления является единственным элементом управления на странице, то ASP.NET не будет создавать функцию __doPostBack, если вы не вызовете GetPostBackEventReference для элемента управления.

Вам не обязательно использовать ссылку, но вам нужно вызвать метод, чтобы страница знала, что нужно сгенерировать функцию на стороне клиента.

Вы можете вызвать GetPostBackEventReference следующим образом:

public class MyTreatment : UserControl, IPostBackEventHandler
{
    protected override void OnLoad(EventArgs e)
    {
        string postBackEventReference = Page.ClientScript.GetPostBackEventReference(this, string.Empty);

        base.OnLoad(e);
    }

    public void RaisePostBackEvent(string eventArgument)
    {

    }
} 

Надеюсь, это поможет.

2 голосов
/ 23 сентября 2011

Должно работать с использованием свойства UniqueID идентификатора экземпляра пользовательского элемента управления (я не мог заставить его работать с ClientID, исходя из моего личного опыта).Вот так:

__doPostBack("<%= yourControlID.UniqueID %>", "arg");
...