2012-10-18 31 views
2

我刚刚为用户控件编写了一个用于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() : ""; 
     } 
    } 

我已经尝试了不同的内联标签组合,并且我总是收到编译错误。有没有一种方法来实现它与内联标签?

+0

编译错误是什么?例如: – codingbiz

+0

:无法通过字符串表示形式'<%DateTime.Now'创建类型为'System.Nullable'1 [[System.DateTime,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'的对象%>'为'Value'属性。 – dragonfly

+0

阅读本文http://stackoverflow.com/questions/370201/why-will-expressions-as-property-values-on-a-server-controls-lead-to-a-co - 花了我时间去了解它太 – codingbiz

回答

0

您需要将实际日期表示置于属性中。原因是Asp.Net控件的一些属性也像例如一个文本框的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 
    } 
    } 

我发现这些链接: