使用内联标记初始化User Control属性值

时间:2012-10-18 19:26:47

标签: asp.net

我刚刚为用户控件编写了一个用于jQuery UI控件的ASP .NET包装器。它可以像这样使用:

<ui:DatePicker ID="startDate" runat="server" LabelText="Start Date:" />

目前我在Page_Load处理程序中设置了此控件的初始值,如下所示:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            startDate.Value = DateTime.Now.AddMonths(-2);
        }
    }

但我认为将初始化代码移动到标记会很好。然而,我无法解决的是如何使用内联标记设置此控件的初始值,例如:

<ui:DatePicker ID="startDate" Value='<%= DateTime.Now.AddMonths(-2) %>' runat="server" LabelText="Start Date:" /> 

我有一个属性:

    public DateTime? Value 
    {
        get
        {
            DateTime result;
            if (DateTime.TryParse(dateBox.Text, out result))
            {
                return result;
            }
            return null;
        }
        set
        {
            dateBox.Text = value != null ? value.Value.ToShortDateString() : "";
        }
    }

我尝试过不同的内联标签组合,但我总是遇到编译错误。有没有办法用内联标签实现它?

1 个答案:

答案 0 :(得分:0)

您需要将实际日期表示放在属性中。原因是Asp.Net控件的某些属性也表现得如下。 TextBox的visible属性不能设置为<asp:TextBox runat="server" Visible='<%= true %>'></asp:TextBox>

 <ui:DatePicker ID="startDate" Value='20/10/2012' runat="server" LabelText="Start Date:" /> 

或者设置Page_Load

的值
  protected void Page_Load(object sender, EventArgs e)
  {
     if(!Page.IsPostBack)
     {
      startDate.Value = DateTime.Now; //initialize DatePicker
     }
  }

我找到了这些链接: