如何在aspx.cs里给用户控件的自定义属性动态赋值?

时间:2021-02-20 20:37:56

//用户控件
public partial class Usercontrol_PageIndex2 : System.Web.UI.UserControl
{
     private string _controlName = "";
     public string ControlName
     {
        get { return _controlName; }
        set { _controlName = value; }
     }
}

//页面后台
public partial class CommunicationSpace : System.Web.UI.Page
{
    Usercontrol_PageIndex2 buc = (Usercontrol_PageIndex2)Page.LoadControl("PageIndex2.ascx");
    buc.ControlName = "aaa";//这样赋值没用,用户控件加载时ControlName还是空值
}


很困惑。希望有人指点迷津,谢谢

12 个解决方案

#1


    前台注册了吗?

#2


会被刷新的 就不要用变量了啊

用ViewState


        public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day : ViewState["selectedDay"].ToString();
            }
            set
            {
                ViewState["selectedDay"] = value;
            }
        }

#3


顶顶顶顶

#4


一楼这个说的  不注册他怎么能知道没赋值上去呢?

#5


引用 2 楼 kevin_cheung 的回复:
会被刷新的 就不要用变量了啊

用ViewState


C# code

        public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year +……




        Usercontrol_PageIndex2 buc = (Usercontrol_PageIndex2)Page.LoadControl("Usercontrol/PageIndex2.ascx");

        buc.ControlType = "asdasdasdasdas";

请问,是这样赋值吗?
报错,未将对象引用到实例

#6


 public string ControlType
    {
        get { return ViewState["ControlType"].ToString(); }
        set { ViewState["ControlType"] = value; }
    }

#7


顶顶顶顶

#8


  <%@ Register Src="Usercontrol_PageIndex2 .ascx" TagName="Page" TagPrefix="uc1" %>
 这是你当前要引用用户控件页面的前台注册代码。
   
   有两种方式引用usercontrol的属性。

   常规方式:userpage.ProcName
   
   前台页面赋值方式  
   <uc1:Page ID="userPage" runat="server"   ProcName="dep"/   ProcName='<%=dep%>'  ProcNameCN="money"/>
  红色部分是你在usercontrol 里定义的属性
  

#9


引用 5 楼 chezeqiang 的回复:
请问,是这样赋值吗?
报错,未将对象引用到实例


1。创建一个WebUserControl1.ascx 应该没有问题把
2。在其中加入属性
public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day : ViewState["selectedDay"].ToString();
            }
            set
            {
                ViewState["selectedDay"] = value;
            }
        }
3.注册其到web页面
<%@ Register Src="~/WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc2" %>  
4.在页面中添加这个控件
<uc2:WebUserControl1 ID="a" Visible=true EnableViewState=true runat="server" />
5.给这个属性赋值a.SelectedDay = DateTime.Now.ToString();
6.这40分我全要了

#10


引用 9 楼 kevin_cheung 的回复:
引用 5 楼 chezeqiang 的回复:
请问,是这样赋值吗?
报错,未将对象引用到实例


1。创建一个WebUserControl1.ascx 应该没有问题把
2。在其中加入属性
public string SelectedDay
  {
  get
  {
  return ViewState["selectedDay"] == null ? DateTime.No……


等等啊。
我去试试

#11


因为你在这里注册时候 已经设置他的ID了 比如ID="ctrlName"

那么赋值就是 ctrlName.属性名=属性值;

例如 ctrlName.SelectedDay = DateTime.Now.ToString();

上边的我都是专门为你写的 作过测试的 绝对可以运行

#12


引用 11 楼 kevin_cheung 的回复:
因为你在这里注册时候 已经设置他的ID了 比如ID="ctrlName"

那么赋值就是 ctrlName.属性名=属性值;

例如 ctrlName.SelectedDay = DateTime.Now.ToString();

上边的我都是专门为你写的 作过测试的 绝对可以运行


真可以嘿。
谢谢了啊。

#1


    前台注册了吗?

#2


会被刷新的 就不要用变量了啊

用ViewState


        public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day : ViewState["selectedDay"].ToString();
            }
            set
            {
                ViewState["selectedDay"] = value;
            }
        }

#3


顶顶顶顶

#4


一楼这个说的  不注册他怎么能知道没赋值上去呢?

#5


引用 2 楼 kevin_cheung 的回复:
会被刷新的 就不要用变量了啊

用ViewState


C# code

        public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year +……




        Usercontrol_PageIndex2 buc = (Usercontrol_PageIndex2)Page.LoadControl("Usercontrol/PageIndex2.ascx");

        buc.ControlType = "asdasdasdasdas";

请问,是这样赋值吗?
报错,未将对象引用到实例

#6


 public string ControlType
    {
        get { return ViewState["ControlType"].ToString(); }
        set { ViewState["ControlType"] = value; }
    }

#7


顶顶顶顶

#8


  <%@ Register Src="Usercontrol_PageIndex2 .ascx" TagName="Page" TagPrefix="uc1" %>
 这是你当前要引用用户控件页面的前台注册代码。
   
   有两种方式引用usercontrol的属性。

   常规方式:userpage.ProcName
   
   前台页面赋值方式  
   <uc1:Page ID="userPage" runat="server"   ProcName="dep"/   ProcName='<%=dep%>'  ProcNameCN="money"/>
  红色部分是你在usercontrol 里定义的属性
  

#9


引用 5 楼 chezeqiang 的回复:
请问,是这样赋值吗?
报错,未将对象引用到实例


1。创建一个WebUserControl1.ascx 应该没有问题把
2。在其中加入属性
public string SelectedDay
        {
            get
            {
                return ViewState["selectedDay"] == null ? DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day : ViewState["selectedDay"].ToString();
            }
            set
            {
                ViewState["selectedDay"] = value;
            }
        }
3.注册其到web页面
<%@ Register Src="~/WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc2" %>  
4.在页面中添加这个控件
<uc2:WebUserControl1 ID="a" Visible=true EnableViewState=true runat="server" />
5.给这个属性赋值a.SelectedDay = DateTime.Now.ToString();
6.这40分我全要了

#10


引用 9 楼 kevin_cheung 的回复:
引用 5 楼 chezeqiang 的回复:
请问,是这样赋值吗?
报错,未将对象引用到实例


1。创建一个WebUserControl1.ascx 应该没有问题把
2。在其中加入属性
public string SelectedDay
  {
  get
  {
  return ViewState["selectedDay"] == null ? DateTime.No……


等等啊。
我去试试

#11


因为你在这里注册时候 已经设置他的ID了 比如ID="ctrlName"

那么赋值就是 ctrlName.属性名=属性值;

例如 ctrlName.SelectedDay = DateTime.Now.ToString();

上边的我都是专门为你写的 作过测试的 绝对可以运行

#12


引用 11 楼 kevin_cheung 的回复:
因为你在这里注册时候 已经设置他的ID了 比如ID="ctrlName"

那么赋值就是 ctrlName.属性名=属性值;

例如 ctrlName.SelectedDay = DateTime.Now.ToString();

上边的我都是专门为你写的 作过测试的 绝对可以运行


真可以嘿。
谢谢了啊。