在 asp.net 网络表单中回发后未调用我的函数

My function is not called after a postback in asp.net webforms

我有一个名为 SetActionSection() 的函数,我将其放置在我的页面加载中。我期待它被调用,但没有任何反应。当我重新加载页面时,我得到了我想要的结果。

这是我的页面加载

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string fullName = GetUserFullName();
            string id = Request.QueryString["id"];
            TextBoxProjectManager.Text = fullName;

            if (id != null)
            {
                GetCMMDetails(TextBoxProjectManager.Text);

                int valid = ValidateUserAccess(id, fullName);
                if (valid > 0)
                    GetProjectPostEval();
                else
                {
                    Response.Write("You are not allowed to access this data.");
                    ActionSection.Visible = false;
                }
            }
            else
            {
                TextBoxProjectManager.Text = fullName;
                GetCMMDetails(fullName);
            }
            SetActionSection();
        }

    }

这里是 SetActionSection() 函数,它根据数据库中的状态显示按钮。

private void SetActionSection()
    {
        string id = Request.QueryString["id"];
        if (id == null)
        {
            LinkButtonSaveDraft.Visible = true;
            LinkButtonSubmit.Visible = true;
            ActionSection.Visible = true;
            return;
        }
        string status = GetStatus(id);
        string projectManager = GetCMM(id, "ProjectManager");
        string buco = GetCMM(id, "Buco");
        string businessExecutiveOfficer = GetCMM(id, "BusinessExecutiveOfficer");
        string i2lFunctionLead = GetCMM(id, "I2LFunctionLead");
        string user = GetUserFullName();

        if ((status.Equals("Draft", StringComparison.OrdinalIgnoreCase))
           && user.Equals(projectManager, StringComparison.OrdinalIgnoreCase))
        {
            Response.Write(status + " Draft");
            LinkButtonSaveDraft.Visible = true;
            LinkButtonSubmit.Visible = true;
            ActionSection.Visible = true;
        }

        if (status.Equals("Submitted", StringComparison.OrdinalIgnoreCase) &&
             user.Equals(buco))
        {
            Response.Write(status + " Submitted");
            LinkButtonSaveDraft.Visible = false;
            LinkButtonSubmit.Visible = false;
            LinkButtonBUCOApprove.Visible = true;
            ActionSection.Visible = true;
        }

        if (status.Equals("(Approved) - BUCO", StringComparison.OrdinalIgnoreCase) &&
            user.Equals(businessExecutiveOfficer))
        {
            Response.Write(status + " (Approved) - BUCO");
            LinkButtonBUCOApprove.Visible = false;
            LinkButtonBEOApprove.Visible = true;
        }

        if (status.Equals("(Approved) - BEO", StringComparison.OrdinalIgnoreCase) &&
            user.Equals(businessExecutiveOfficer))
        {
            Response.Write(status + " (Approved) - BEO");
            LinkButtonBEOApprove.Visible = false;
            LinkButtonI2LFunctionLeadApprove.Visible = true;
        }
        if (status.Equals("(Approved) - I2L Function Lead", StringComparison.OrdinalIgnoreCase))
        {
            Response.Write(status + " (Approved) - I2L Function Lead");
            LinkButtonI2LFunctionLeadApprove.Visible = false;
        }
    }

我已经测试了 SetActionSection 方法并且它有效。我只想在用户单击提交按钮时调用它。顺便一提。我正在重定向到相同的表单。

if(!IsPostBack) 条件中的任何内容都只会在初始加载时执行,而不会在提交时执行。如果你想

你可以把你想要 运行 提交(回发)的代码放在 else 里面
    if (!IsPostBack)
 {
 ....
 }
 else
 {
  SetActionSection();
 }

https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.page.ispostback?view=netframework-4.8

或者将您的代码放在按钮点击事件中