Nếu bạn không muốn kế thừa trực tiếp từ WebControl thay vì từ Bảng điều khiển, cách dễ nhất để làm điều này là trang trí lớp học với thuộc tính [ParseChildren(false)]
. Mặc dù ngay từ cái nhìn đầu tiên, điều này có thể gợi ý rằng bạn không muốn phân tích trẻ em, những gì mà false
thực sự chỉ ra là bạn không muốn trẻ em được coi là tài sản. Thay vào đó, bạn muốn chúng được coi là điều khiển.
Bằng cách sử dụng thuộc tính này, bạn nhận được hầu như tất cả các chức năng out of the box:
[ToolboxData("<{0}:RoundedBox runat=server></{0}:RoundedBox>")]
[ParseChildren(false)]
public class RoundedBox : WebControl, INamingContainer
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.Write("<div class='roundedbox'>");
}
public override void RenderEndTag(HtmlTextWriter writer)
{
writer.Write("</div>");
}
}
Điều này sẽ cho phép bạn thêm RoundedBox điều khiển để trang của bạn, và thêm trẻ em (hoặc điều khiển asp.net hay html thô) sẽ được hiển thị bên trong div của bạn.
Tất nhiên, css sẽ được thêm vào để tạo kiểu hộp tròn.
Đây có lẽ là một câu hỏi rất ngu ngốc nhưng vì tôi không thể đặt mã này trong điều khiển người dùng thông thường (.ascx), tôi sẽ đặt nó ở đâu? Tôi tạo ra một lớp và đặt nó trong đó, nhưng sau đó tôi không biết làm thế nào để thêm nó vào một trang (kéo chỉ cần tạo ra một liên kết) –
Đăng một câu hỏi về cách sử dụng ASP.NET Server điều khiển, và tôi có thể trả lời, Tôi không phù hợp với lời giải thích trong hộp bình luận nhỏ này. – FlySwat
Nếu bạn xây dựng mã, mã sẽ xuất hiện trên hộp công cụ. –