ASP.Net c# - URL 参数异常行为

ASP.Net c# - URL Parameter weird behaviour

我正在做一些 URL 更改,以便在用户单击某些组件时在末尾添加一些 id 值。

因此,例如,当我登录到我的 AdminCP 时,我有一个用户帐户列表,可以对它们执行各种操作,例如修改信息或删除用户帐户。

我使用的 ASP.NET 页面是根据母版页设计的。该母版页也是全局母版页的一部分。所以,就像一个嵌套的母版页。

单击用户帐户时,我将用户名记录在会话变量中,然后在页面加载时使用 button postback url 调用它。例如;

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["QueryString"] != null)
    {
        AdminHiddenButtonDelete.PostBackUrl = Request.Url.AbsolutePath + Session["QueryString"].ToString();
    }
}

我在触发按钮事件时设置 Session["QueryString"]

private void DeleteUser(string user)
{
    admin_user_accounts_wrapper.Style.Add("display", "none");
    admin_user_accounts_user_delete.Style.Add("display", "block");

    Session["ClickedUserAccount"] = user; // This session is used to hold the username of the clicked useraccount
    Session["QueryString"] = "?User = " + user + " ";

    admin_user_account_user_delete_heading.InnerText = "Are you sure you wish to delete the user account " + user + "?";
}

当用户点击网站上的 html <button /> 时调用。

其中查询字符串包含用户帐户名称。例如,输出的 URL 应该是 url.aspx?User=John。除了,它似乎总是落后一个回发。因此,如果我导航到 John 用户,然后导航到 Rick 用户,Rick URL 将显示 John,当我返回John 用户 URL 将显示 Rick.

我希望这是有道理的!我只是不确定完成此操作的最佳方法。

对于可能做过与我类似的事情的任何人,我想 post 我关于如何解决此问题的回答,希望它可以帮助那里的其他人。

我做的第一件事是回到一些关于动态内容的基础知识,并意识到我应该使用 AJAX Update Panel 来减少 postbacks 的数量那正在发生。

我接下来要做的是逐行检查所有代码。我以编程方式制作了一个内容容器,其中包含 div id 和一些 HTML 按钮。单击这些 HTML 按钮会触发 JavaScript 功能。然后这个函数调用了两个隐藏的 <asp 按钮。这就是我的错误开始的地方。

JavaScript 函数调用了点击事件;

 var hiddenButton = $('#<%= AdminHiddenButtonDelete.ClientID %>');
            if (hiddenButton != null) {
                hiddenButton.click(); 

这是我的第一个错误。我现在有两个按钮,一个按钮执行两次 click 服务器命令,两个 post 返回。

因此,在删除两个隐藏按钮和所有 javascript 之后,我需要更改对内容进行编码的方式。

我换成使用 WebControls.Button 并将 contentResolver 放在 aspx.cs 而不是它自己的 class 中,然后单击使用 new EventHandler(this.UserDelete_Click);

这将 eventClick 绑定到我自己的函数,允许我注册 onClick 事件而无需 post打包,因为我正在使用更新面板。