【问题标题】:Access user control properties and values from code behind in c#从 C# 中的代码访问用户控件属性和值
【发布时间】:2020-05-30 17:50:23
【问题描述】:

这是 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 />";
    }
}

user control 中标签Label1 的值使用来自master page 的标签lblUserName 值设置您的值

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

code behind 上从 user control 获取标签 Label1 的值
    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-controls master-pages


    【解决方案1】:

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

    User.Identity.Name
    

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2010-09-29
      • 2012-01-10
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多