admin
  • admin
  • 100% (Exalted)
  • Administration Topic Starter
a year ago
Để chèn một file .ascx vào tất cả các trang trong ASP.NET, bạn có thể sử dụng một trang cơ sở (base page) và kế thừa từ trang cơ sở đó trong tất cả các trang khác.

Dưới đây là các bước thực hiện:

Tạo một file .ascx (user control) chứa nội dung bạn muốn chèn vào tất cả các trang. Ví dụ: MyUserControl.ascx.

Trong file .ascx, bạn cần đảm bảo rằng nội dung của bạn được hiển thị bằng cách sử dụng thẻ <asp:PlaceHolder> hoặc các thẻ khác tương tự. Ví dụ:

<asp:PlaceHolder ID="phContent" runat="server"></asp:PlaceHolder>
Tạo một trang cơ sở (base page) để kế thừa từ đó trong tất cả các trang khác. Ví dụ: MyBasePage.cs.
public class MyBasePage : System.Web.UI.Page
{
    protected PlaceHolder phContent;

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        phContent.Controls.Add(LoadControl("~/MyUserControl.ascx"));
    }
}
Trong tất cả các trang khác, thay vì kế thừa từ System.Web.UI.Page, bạn sẽ kế thừa từ MyBasePage. Ví dụ:
public partial class MyPage : MyBasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Bạn có thể thực hiện các logic của riêng mình ở đây
    }
}
Trong file .aspx của mỗi trang, hãy đảm bảo rằng bạn sử dụng đúng namespace của trang cơ sở. Ví dụ:
<%@ Page Language="C#" Inherits="MyNamespace.MyPage" %>
Với cách này, file .ascx sẽ được chèn vào tất cả các trang mà bạn kế thừa từ trang cơ sở (base page).