如何在 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;}
}
有 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;}
}