Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将值从页面传递到用户控件?_C#_Asp.net - Fatal编程技术网

C# 如何将值从页面传递到用户控件?

C# 如何将值从页面传递到用户控件?,c#,asp.net,C#,Asp.net,我在一个页面中使用一个用户控件。 基本上,在登录后,这个页面将带有用户控件。 我想在登录页面的用户控件中传递用户名。比如说,将登录名存储在主页上某个位置的标签中。像这样: lblLogin.Text = "LoginName"; Session["LoginName"] = "Some User Name"; 现在,在用户控件上有另一个标签,名为lblWCLogin,您想从父页面分配登录名。这样做: Label lblTextFromParentPageLabel = this.Parent

我在一个页面中使用一个用户控件。 基本上,在登录后,这个页面将带有用户控件。
我想在登录页面的用户控件中传递用户名。

比如说,将登录名存储在主页上某个位置的
标签中。像这样:

lblLogin.Text = "LoginName";
Session["LoginName"] = "Some User Name";
现在,在用户控件上有另一个
标签
,名为lblWCLogin,您想从父页面分配登录名。这样做:

Label lblTextFromParentPageLabel = this.Parent.FindControl("lblLogin"); 
lblWCLogin = lblTextFromParentPageLabel.Text;
string login_name = (string)(Session["LoginName"]);
Label1.Text = login_name;
另一种方法(不管您是否拥有母版页)是使用会话。

将页面上的会话或母版页代码设置为隐藏。像这样:

lblLogin.Text = "LoginName";
Session["LoginName"] = "Some User Name";
检索UserControl上的会话值,如下所示:

Label lblTextFromParentPageLabel = this.Parent.FindControl("lblLogin"); 
lblWCLogin = lblTextFromParentPageLabel.Text;
string login_name = (string)(Session["LoginName"]);
Label1.Text = login_name;

实现这一点的方法有很多

  • 因为一个是找到控制
  • 在会话中存储值并设置该会话中的值
  • 创建用户控件的公共方法,该方法将设置标签的值。。并在所需位置从页面调用userControl.SetPageLabel()方法
  • 确保您的标签位于更新面板中,其他wise标签文本将被更改,但在屏幕上不可见

    或者您可以使用一些javascript来设置标签


    有很多方法可以做到这一点


    我的建议是在用户控件中创建一个属性字段,允许您从引用用户控件的任何页面读取或写入值。

    您使用的是哪种身份验证?例如,如果您的“登录页面”正在实施表单身份验证,则您已经可以访问当前用户。先生,我可以在登录后访问当前用户,但问题是我想在用户控件中显示用户名您想显示哪个用户名?你想在用户登录之前显示它吗?你不应该在会话中存储用户信息吗?它存储在会话中,我只传递会话这应该在母版页的页面加载中?好,您没有提到您有母版页。哦,我真的很抱歉。它不是母版页,我的意思是说它应该在父页的页面加载中?是的,lblLogin.Text=“LoginName”;应该在父页面上。我怎么做?