这是c#中的user control
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Message.ascx.cs" Inherits="Message" %>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
public partial class Message : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
MasterPage mstr = this.Parent.Page.Master as MasterPage;
Label1.Text = "User control >>> " + (mstr.FindControl("lblUserName") as Label).Text + "<br /><br /><br />";
}
}
Label1
中标签user control
的值,用lblUserName
中标签master page
的值设置您的值>
的后面的代码上的public partial class MasterPage : System.Web.UI.MasterPage { public string UserNamePropertyOnMasterPage { get { return lblUserName.Text; } set { lblUserName.Text = value; } } } <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> <span style="font-size: 25px; background-color: greenyellow"> <asp:Label ID="lblUserName" runat="server" Text="foo"></asp:Label> </span> </div> </form>
现在我需要从Default.aspx.cs
Label1
获取标签user control
的值 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (Page page = new Page())
{
UserControl userControl = (UserControl)page.LoadControl("Message.ascx");
string sp = (userControl.FindControl("Label1") as Label).Text;
Response.Write("You are Welcome : " + sp.ToString() + "<br /><br /><br />");
}
}
}
<%@ Page Title="" Language="C#" MasterPageFile="MasterPage.master"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="MasterPage.master" %>
<%@ Register Src="~/Message.ascx" TagPrefix="uc1" TagName="Message" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:Label ID="lblCurrentUserName" runat="server" Text=""></asp:Label>
<uc1:Message ID="Message" runat="server"></uc1:Message>
</asp:Content>
没有错误,但Default.aspx
上的返回为空如何解决此问题?
请,您能帮我吗?
这是c#中的用户控件
此设计存在很多问题。首先,用户名通常可以从您使用的身份验证框架中获得。
User.Identity.Name