【发布时间】:2014-01-29 02:30:22
【问题描述】:
在我的 .net 应用程序中,我在导航栏中创建了一个标签,该标签从服务器调用 header 变量作为用户名。这工作正常,但是当我尝试将该变量传递给我的其他页面时它不起作用。
我认为最好的选择是使用查询字符串而不是会话变量。所以这是我的代码(免责声明:第一次使用查询字符串,所以不确定它是否正确使用)
aspx - 带有用户名的主页:
<asp:Label runat="server" ID="Username" Text="User"></asp:Label>
cs - 主页:
Username.Text = Request.Headers["displayname"];
Response.Redirect("About.aspx?Parameter=" + Username.Text);
aspx - 关于页面需求/用户名:
<asp:Label runat="server" ID="Username" Text="User"></asp:Label>
cs - 关于页面:
Username.Text = Request.QueryString["Parameter"].ToString();
我知道其中一些可能是错误的,因此任何有关执行此操作的最佳方法或我做错了什么的建议都将真正帮助我解决此问题。
编辑 - 从两个页面添加我的 cs
主要:
protected void Page_Load(object sender, EventArgs e)
{
Username.Text = Request.Headers["displayname"];
DateUpdated.Text = DateTime.Now.ToString("M/dd/yy");
Session["name"] = "Username.Text";
}
关于:
protected void Page_Load(object sender, EventArgs e)
{
Username.Text = (string) (Session["Username"]);
DateUpdated.Text = DateTime.Now.ToString("M/dd/yy");
}
【问题讨论】:
-
我会考虑将用户名保存为会话变量而不是 q 字符串
-
更改您的会话["UserName"] = "UserName";到 Session["UserName"] = UserName.Text;我使用“用户名”作为占位符。虽然,您这样做的方式应该将“用户名”(文字字符串)设置为您的标签。
-
您可能还希望将两个代码块放在 if (!IsPostBack) 块中,以确保它们只触发一次(当页面最初加载时,而不是在任何后续回发中)-@987654321 @
-
我越看这个越糊涂。你为什么使用标题变量?为什么不在用户登录时设置 UserName 会话变量?
-
抱歉,您的问题让我有些困惑,但我必须调用 header 变量才能从服务器获取它(所以有人告诉我)我不知道有任何其他方式可以显示它跨度>
标签: c# html asp.net query-string