如何在 ASP.NET 中设置用户控件的 属性 的值?

How to set the value of a usercontrol's property in ASP.NET?

有 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 的值?

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

你需要坚持你的属性。如果你不这样做,它会在每次页面加载时重置,就像任何其他局部变量一样。您可以像这样轻松地坚持到视图状态:

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