У меня есть эта скрытая кнопка, связанная с функцией, которую я хотел бы запускать автоматически на веб-странице после истечения времени ожидания сеанса:
Код кнопки:
<asp:Button runat = "server" id = "btnHdn" Style = "display: none" OnClick = "Button1_Click"/>
Триггер сеанса тайм-аута:
setTimeout(function ()
{
document.getElementById("btnHdn").click;
}, timeout);
Код, за которым я хотел бы вызвать (.cs):
protected void Button1_Click(object sender, EventArgs e)
{
RedirectToHomePage();
}
protected void RedirectToHomePage()
{
try
{
string whichCountry = ConfigurationManager.AppSettings["country"].ToString();
string isFromGMAL = ConfigurationManager.AppSettings["GMAL"].ToString();
string urlStr = "LanguageSelection.aspx";
if (whichCountry.ToLower() == "sg")
{
urlStr = "LandingPage.aspx";
}
else if (whichCountry.ToLower() == "nl")
{
urlStr = "LandingPagexxxx.aspx";
}
}
catch (System.Exception ex)
{
}
}
Судя по всему, код вроде не работает. Как только сеанс достиг нуля, ничего не произошло, и таймер продолжит отсчет.
Ребята, не могли бы вы определить, что не так с кодом?
Возможный дубликат Как запустить метод при завершении сеанса в с #
Привет @PrashantPimpale, решение, данное Umair ниже, работает. В статье, которую вы предложили, есть другой сценарий, отличный от моего. В любом случае проблема решена. Спасибо.
Вам просто нужно немного изменить код JavaScript, потому что кнопка btnHdn
ClientId изменяется на стороне клиента, поэтому используйте его, как показано ниже, а .click
- это метод, поэтому добавьте на него скобки, например .click()
setTimeout(function () {
document.getElementById("<%=btnHdn.ClientID%>").click();
}, timeout);
Ах, вот в чем причина! Спасибо, действительно работает :)
Попробуйте ответ Абдуллы и дайте нам знать!