简体   繁体   English

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

[英]Access user control properties and values from code behind in c#

this is an user control in c#这是 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 />";
    }
}

the value of label Label1 in user control set your value with label lblUserName value from master page user control中 label Label1的值使用master page中的 label 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>

Now I need get the value of label Label1 from user control on code behind of Default.aspx.cs现在我需要从Default.aspx.cs后面代码user control中获取 label 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>

Don't have error but the return on Default.aspx is empty没有错误,但Default.aspx上的返回为空

在此处输入图像描述

How to do resolve this?如何解决这个问题?

Please, can you help me?拜托,你能帮帮我吗?

There are a lot of problems with this design.这种设计存在很多问题。 First, the username is generally available from the authentication framework you are using.首先,用户名通常可以从您使用的身份验证框架中获得。

User.Identity.Name

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM