Пытается __dopostback из jscript, RaisePostBackEvent не стреляет
Я пытаюсь следовать предложению здесь: вызвать функцию ASP.NET из JavaScript?
Но это не работает для меня. Страница действительно отправляет назад. но мой RaisePostBacKEvent
никогда не стреляет Я делаю это в пользовательском контроле, а не на странице:
public partial class MyTreatment : System.Web.UI.UserControl, IPostBackEventHandler
У кого-нибудь есть какие-либо предложения о том, как заставить это работать?
Спасибо
2 ответа
Указываете ли вы ClientID вашего элемента управления, в отличие от ClientID страницы (как в примере из другого вопроса SO, на который вы ссылались)?
Если нет, то это объясняет, почему страница отправляет обратно, но не вызывает метод RaisePostBack в вашем элементе управления.
Чтобы сослаться на ClientID вашего элемента управления, вызовите функцию __doPostBack следующим образом:
__doPostBack("<%= yourControlID.ClientID %>", "an argument");
В качестве примечания: если ваш элемент управления является единственным элементом управления на странице, то функция __doPostBack не будет создана ASP.NET, если вы не вызовете 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)
{
}
}
Надеюсь это поможет.
Он должен работать с использованием свойства UniqueID идентификатора экземпляра пользовательского элемента управления (я не мог заставить его работать с ClientID, исходя из моего личного опыта). Вот так:
__doPostBack("<%= yourControlID.UniqueID %>", "arg");