Самое элегантное решение - просто переопределить PlaceHolder
:
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomControls
{
[ToolboxData("<{0}:Holder ID='Holder1' runat='server'></{0}:Holder>"), ControlBuilder(typeof(ControlBuilder))]
public sealed class Holder: PlaceHolder
{
}
}
Ключ здесь использует ControlBuilder
вместо PlaceHolderControlBuilder
, который просто переопределяет его, чтобы всегда возвращать false
для AllowWhiteSpaceLiterals
.
Вы используете его как любой другой веб-элемент управления:
<%@ Register TagPrefix="asp" Namespace="CustomControls" %>
<asp:Holder runat="server">...</asp:Holder>