需要在不止一个地方的ASPX页面中引用Usercontrol(ascx),结果不同

时间:2011-12-23 16:58:35

标签: asp.net user-controls parameter-passing ascx

场景: Default.aspx如下所示。

<%@ Page MasterPageFile="~/StandardLayout.master" Language="C#" CodeFile="Default.aspx.cs"     Inherits="_Default" %>
<%@ Register src=  "~/Controls/Us.ascx" tagname="AboutUs" tagprefix="site" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
    <div id="large">
       <site:AboutUs  ID="AboutUsControl" runat="server" />
    </div>
   <div id="small">
      <site:AboutUs  ID="AboutUsControl" runat="server" />
    </div>
</asp:Content>

AboutUs.ascx.cs为标签控件分配一些值。在上面的场景中,我想重新使用“div id = small”中的AboutUs,因为逻辑相同但只有值更改。

我的问题在AboutUs.ascx.cs中,我需要一些方法来确定它是否属于“”,分配Label1 =“我在这里”。否则Label1 =“我到处都是”

我正在尝试传递参数但是我需要在default.aspx.cs中的代码隐藏中做任何事情吗?或任何其他建议。

请建议。

1 个答案:

答案 0 :(得分:3)

确保两个用户控件都具有唯一ID。我将使用AboutUsControl1和AboutUsControl2。声明用户控件的name属性:

private string _doWhat;
    public string doWhat
    {
        get { return _doWhat; }
        set { _doWhat = value; }
    }

    //Execute the check somewhere in your code to set the text you want.    
    private void Do_Something()
    {
        if (_doWhat == "Large")
        {
            //display "I am here"
        }
        else
        {
            //display "I am everywhere"
        }
    }

在使用用户控件的页面背后的代码中,只需通过调用公共变量传递值:

AboutUsControl1.doWhat = "Large";
        AboutUsControl2.doWhat = "Small";

或者只是在控件本身中设置doWhat:

<site:AboutUs ID="AboutUsControl1" runat="server" doWhat="Large" />
<site:AboutUs ID="AboutUsControl2" runat="server" doWhat="Small" />