首页 > 解决方案 > 页面打开几分钟后没有触发 OnClick 事件

问题描述

我已经搜索了这个,但没有找到任何匹配的问题:

我在我们公司的本地服务器上托管了一个 DNN 网站,并且我有自己的模块,其中有一些带有文本框和按钮的表单。我现在有以下问题:

当我输入文本时,我打开页面并单击按钮,触发 OnClick-Event 并且一切正常。当我现在将页面打开几分钟然后单击按钮时,页面只是重新加载并且事件没有触发。

我也尝试过多次调试,但如果页面打开超过 5 分钟,调试器永远不会在 OnClick 方法处停止(我不知道确切的超时,因为我不知道哪个参数导致这个)

我不确定这是否是 IIS、ASP 或 DNN 的问题 - 所以我希望在这里找到帮助。如果您需要更多信息,请询问。

由于您要求提供代码,因此我将其简化为重要的行(总共有几千行):

查看.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="View.ascx.cs" Inherits="View" %>

...

<asp:Panel runat="server" ID="pnlGridView"></asp:Panel>

...

查看.ascx.cs

public partial class View : FremdeBestellungenModuleBase, IActionable
{

...

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
...
                    BuildGrids(true);
...
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
...
        private void BuildGrids(bool all)
        {
...
                GridView gv = new GridView()
                {
                    ID = "GridView_" + role,
                    AllowSorting = true,
                    AutoGenerateColumns = false,
...
                };
...
                gv.RowDataBound += new GridViewRowEventHandler(Generated_GridView_RowDataBound);
                gv.Sorting += new GridViewSortEventHandler(GridviewBestellung_Sorting);
                if (Session["sort"] == null)
                {
                    Session[gv.ID] = gv.DataSource = list.Where(elem => elem != null).OrderByDescending(x => x.BestellNr).ToList();
                }
                else
                {
                    gv.DataSource = Session[gv.ID];
                }
                gv.DataBind();
                if (FindControl(gv.ID) == null)
                {
                    pnlGridView.Controls.Add(gv);
                }
            }

...
        protected void Generated_GridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            GridView gv = sender as GridView;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
...
                CheckBox chkManager = new CheckBox()
                {
                    ID = "chkManager"
                };

                e.Row.Cells[ManagerColumns.CheckUndHidden].Controls.Add(chkManager);
...

            if (e.Row.RowType == DataControlRowType.Footer)
            {
...
                Button btnFreigeben = new Button()
                {
                    ID = "btnFreigeben",
                    Text = "Freigeben",
                    UseSubmitBehavior = false
                };
                btnFreigeben.Click += new EventHandler(BtnFreigeben_Click);
...
            }
        }

        protected void BtnFreigeben_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            GridView gv = (GridView)btn.NamingContainer.NamingContainer;

            foreach (GridViewRow r in gv.Rows)
            {
                CheckBox chkManager = r.FindControl("chkManager") as CheckBox;
                if (chkManager.Checked)
                {
                //do stuff;
                BuildGrids(true);
                Response.Redirect(Request.RawUrl);

            }
        }

标签: c#asp.netiisdotnetnuke

解决方案


推荐阅读