WebCustomControl и вставка его на страницу

Александр Привалов
Дата: 19.05.2010 15:43:23
Делаю свой компонент в отдельной DLL
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace My
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
    public class WebCustomControl1 : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(/*Text*/"test");
        }
    }
}

добавляю его на страницу
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Controls.Add(new My.WebCustomControl1());
    }
}

в результате получается, что HTML выглядит так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
	Untitled Page
</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGRIFgGj/8qTj15vvWNGxYLE/knRLA==" />
</div>

    <div>
    
    </div>

    </form>
</body>
</html>
<span>test</span>

Если же вставлять контрол в файле ASPX, то все отображается нормально и попадает в <form>.
Что я делаю неправильно и как правильно?
Starlex
Дата: 19.05.2010 16:15:57
Александр Привалов,

Нужно в форму вставлять.

Page.Form.Controls.Add(new TextBox());
Александр Привалов
Дата: 19.05.2010 16:17:51
Хм...
Мдя, спасибо.