如何在ASP.NET中设置usercontrol属性的值?

时间:2016-02-29 21:55:39

标签: c# asp.net user-controls

在多个地方使用了3个下拉列表。所以我决定将它们放在userControl中。

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="DetailsDropDownList.ascx.vb"
    Inherits="UserControls_DetailsDropDownList" %>

    <asp:DropDownList ID="dedMoth" runat="server"></asp:DropDownList>
    <asp:DropDownList ID="dedDay" runat="server"></asp:DropDownList>
    <asp:DropDownList ID="dedYear" runat="server"></asp:DropDownList>

在后面的代码中,我定义了一个属性,以便捕获要显示的值。

public DateTime DetailsDate { get; set; }

所以我以这种方式设置属性:myUserControl.DetailsDate = myObject.myDate

问题是没有设置任何值。当我设置断点时,我注意到UserControl的生命周期在主页面之后开始。

我也试过这个,但没有运气。

<uc1:DetailsDropDownList runat="server" ID="myUserControl" 
     DetailsDate ="<%= myObject.myDate%>" />

那么如何设置UserControl的值?

2 个答案:

答案 0 :(得分:1)

添加Page.DataBind();在Page_Load()事件中。这将绑定页面数据。一旦调试器通过页面加载检查预期日期即将到来。

答案 1 :(得分:1)

你需要坚持你的财产。如果不这样做,它会在页面加载时重置,就像任何其他局部变量一样。你可以很容易地坚持到viewstate,尽管如此:

public DateTime DetailsDate
{
     get{
         if(ViewState["DetailsDate"] == null)
         {
              return DateTime.Today;
         }
         else
         {
              return (DateTime)ViewState["DetailsDate"];
         }
     }
     set {ViewState["DetailsDate"] = value;}
}