【发布时间】:2015-06-28 15:41:15
【问题描述】:
当用户点击某些组件时,我正在做一些 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。
我希望这是有道理的!我只是不完全确定实现这一目标的最佳方法。
【问题讨论】:
-
你在哪里设置
Session["QueryString"]?您可以更新以包含该代码吗? -
当然。给我一秒钟
-
听起来可能会发生以下情况: 1. 用户点击删除按钮删除约翰。 2. 调用页面加载事件,这会更新会话变量为 John。 3. 约翰被删除。 4. 删除按钮的链接将更新为 John,但该用户已被删除。因此,您将获得一位用户。
-
是的,我上面的步骤可能并不完全准确,但似乎代码正在删除一个用户,然后会话变量会随着被删除的用户而不是下一个用户更新。您应该端到端地单步执行您的代码,以准确跟踪正在发生的事情以及以什么顺序发生。
-
我已经停止使用会话来看看会发生什么。似乎是导致此问题的两次页面刷新。我想我知道我需要做些什么来修复它。
标签: asp.net c#-4.0 url-rewriting