【问题标题】:ASP.net Server Controls and using AjaxcontrolToolkitASP.net 服务器控件和使用 AjaxcontrolToolkit
【发布时间】:2013-02-05 15:35:46
【问题描述】:

我有一个关于服务器控件 VS 的问题。用户控件 (.ascx)。目前,当我编写用户控件时,我希望能够利用 AjaxControlToolKit DLL。特别是,我希望我的用户控件能够进行部分回发并使用各种扩展程序(例如modalPopUp)。不过,我的老板更喜欢我们使用服务器控件,以便我们可以将它们编译成 DLL 并在各种应用程序中使用它们。我的问题是:如果我将用户控件重写为服务器控件,我还能使用 AjaxControlToolKit 及其所有功能(异步回发和扩展程序)吗?

仅供参考:我正在使用 Visual Studio 2010、AjaxControlToolkit 4.1.60919 和 .Net 4.0

【问题讨论】:

    标签: asp.net visual-studio-2010 ajaxcontroltoolkit asp.net-4.0


    【解决方案1】:

    是的,您将能够做到这一点。只需从CompositeControl 类接口继承您的控件,并将任何扩展程序或控件从 ACT 项目添加到 Controls 集合,就像您应该使用序号 ASP.NET 服务器控件执行此操作一样。您也可以继承现有控件并实现INamingContainer 接口,但在这种情况下,您必须从控件的Render 方法手动调用RenderChildren 方法:

    [DefaultProperty("Text")]
    [ToolboxData("<{0}:WatermarkedTextBox runat=server></{0}:WatermarkedTextBox>")]
    public class WatermarkedTextBox : TextBox, INamingContainer
    {
        private AjaxControlToolkit.TextBoxWatermarkExtender _watermarkExtender;
    
        public string WatermarkText
        {
            get
            {
                return ViewState["WatermarkText"] as string;
            }
            set
            {
                ViewState["WatermarkText"] = value;
            }
        }
    
        protected override void CreateChildControls()
        {
            Controls.Clear();
    
            this._watermarkExtender = new AjaxControlToolkit.TextBoxWatermarkExtender
            {
                ID = "wte",
                TargetControlID = this.ID,
                WatermarkText = this.WatermarkText
            };
            this.Controls.Add(_watermarkExtender);
        }
    
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
            RenderChildren(writer);
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 2011-03-02
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2011-05-04
      • 2011-03-09
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多