从c#中的代码访问用户控件属性和值

问题描述 投票:1回答:1

这是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

上的返回为空

enter image description here

如何解决此问题?

请,您能帮我吗?

这是c#中的用户控件

c# user-controls master-pages
1个回答
0
投票

此设计存在很多问题。首先,用户名通常可以从您使用的身份验证框架中获得。

User.Identity.Name
© www.soinside.com 2019 - 2024. All rights reserved.