如何实现在asp.net嵌入自定义标签?(How to achieve embedded custo

2019-10-28 23:04发布

我发现这个例子:

<telerik:RadDatePicker
 ID="RadDatePicker1"
 runat="server">
 <DateInput Width="100%"></DateInput>
 <Calendar
     CellAlign="Center"
     CellVAlign="Middle"
     DayNameFormat="FirstLetter"
     FirstDayOfWeek="Default"
     MonthLayout="Layout_7columns_x_6rows"
     Orientation="RenderInRows"
     TitleAlign="Center"
     UseColumnHeadersAsSelectors="False"
     ShowRowHeaders="False">
</Calendar>
<DatePopupButton 
     CssClass="radPopupImage_Default" 
     BorderColor="#D0E1F2" 
     BorderStyle="Solid" 
     BorderWidth="1px" />

我的假设是,RadDatePicker里面有一个DateInput对象,日历对象和DatePopupButton对象。

我想有自己的自定义控制,允许内部对象如访问

    <jonno:textbox id="txt1" runat="server"><FieldConfig fieldName="Input1"/></jonno:textbox>

理想情况下,我不希望FieldConfig类是视觉类,但它的确定,如果它是。

我怎样才能做到这一点?

Answer 1:

嵌入式的定制标签是你无法控制的属性。 为了能够在标记设置它们,你需要来装饰你的控制和属性具有以下属性:

  • 控制:ParseChilden,PersistChildren
  • 属性:PersistenceMode

从我使用有类似的功能的控制示例:

/// <summary>
/// Control that will conditionally show one of two views
/// </summary>
[ParseChildren(true)]
[PersistChildren(true)]
public class EditingView : CompositeControl
{
    #region private fields

    private View _displayView = new View();
    private View _editView = new View();

    #endregion
    #region properties

    /// <summary>
    /// The view that will be rendered in display mode
    /// </summary>
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public View DisplayView
    {
        get
        {
            return _displayView;
        }
        set
        {
            _displayView = value;
        }
    }

    /// <summary>
    /// The view that will be rendered in editing mode
    /// </summary>
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public View EditView
    {
        get
        {
            return _editView;
        }
        set
        {
            _editView = value;
        }
    }
    /* Implementation details hidden */
}

看属性了MSDN上对他们究竟读了。 以上应该做你需要它,虽然做的事。 在标记然后我可以简单地分配两种观点:

<ctl:EditingView runat="server">
<DisplayView>
    blah blah
</DisplayView>
<EditView>
    blah blah edit
</EditView>
</ctl:EditingView>

唯一的区别是,我的性能仍器WebControls,并采取更多的子控件。 这件事虽然shouldn't,只要你设定的属性的权利。

门诺



文章来源: How to achieve embedded custom tags in asp.net?