Asp.net

ASP.NET C# 中的自定義控制項

  • January 11, 2011

我創建了一個簡單的自定義控制項,它只繼承自Literal控制項,還沒有任何擴展,程式碼是空的。

命名空間:自定義控制項

類名:字面量:System.Web.UI.WebControls.Literal

接下來我要做的是在aspx頁面中註冊這個控制項,如下所示:

<%@ Register TagPrefix="web" Namespace="CustomControls" %>

(我在幾個教程中讀到這是註冊它的方法之一,除了 web.config 等。)

畢竟,對我來說沒有智能,更糟糕的是 - 當我嘗試執行包含控制項的頁面時,我得到一個解析錯誤“未知的伺服器標籤:web”。

如果需要此資訊,我使用了“創建新項目”而不是新網站。

我的問題可能是什麼?

提前致謝。

這是我如何做到的,一步一步從無到有。第一種方法使用第二個項目/程序集。對於 App_code 版本,向下滾動。

Web應用項目方法

  1. 創建一個新的 ASP.Net Web 應用程序。記下名字,我的叫 WebApplication2。如果您已經有一個現有的 Web 應用程序(很可能),請點兩下項目的屬性部分並檢查“程序集名稱”屬性,並記下它。
  2. 在名為 Literal.cs 的 Web 應用程序中創建一個新類
  3. 為類定義輸入類似於以下的程式碼:
namespace CustomControls
{
   public class Literal : System.Web.UI.WebControls.Literal
   {
   }
}
  1. 將以下註冊標記添加到您的 aspx 頁面頂部

<%@ 註冊程序集=“WebApplication2” namespace=“CustomControls” tagprefix=“web” %>

如果您的程序集名稱不同,請在此處更改。我注意到當我在 VB.Net 中執行此操作時,命名空間是 WebApplication1.CustomControls 而不是像在 C# 中那樣只是 CustomControls,有點奇怪。

  1. 將新控制項添加到您的頁面:

<web:Literal ID=“Literal1” runat=“server” Text=“test” />

分離項目法

  1. 創建一個新的空網站 (ASP.Net)。
  2. 將名為 CustomControls 的新 ASP.Net 伺服器控制項庫添加到解決方案中。
  3. 向名為 Literal 的新項目添加一個新類(我使用的是 C#,因此我的文件名為 Literal.cs)。下面是我的超級基本程式碼,我認為應該與問題中描述的程式碼相匹配。
namespace CustomControls
{
   public class Literal : System.Web.UI.WebControls.Literal
   {
   }
}
  1. 將 CustomControls 項目的引用添加到您的網站。
  2. 將程序集註冊添加到您的 aspx 頁面頂部:

<%@ 註冊程序集=“CustomControls” 命名空間=“CustomControls” tagprefix=“web” %> 6. 將控制項的新實例添加到您的頁面:

<web:Literal ID=“Literal1” runat=“server” Text=“test” />

在 App_Code 方法中

  1. 創建一個新的空網站 (ASP.Net)。
  2. 向 App_Code 文件夾 Literal2 添加一個新類(我使用的是 C#,因此我的文件名為 Literal2.cs)。下面是我的超級基本程式碼,我認為應該與問題中描述的程式碼相匹配。我將其稱為 2,以便您可以將其與上述方法結合使用而不會出現編譯錯誤
namespace CustomControls
{
   public class Literal2 : System.Web.UI.WebControls.Literal
   {
   }
}
  1. 通過將以下行添加到頂部,在您的 aspx 頁面中註冊 app_code 的程序集/命名空間

<%@ Register Namespace=“CustomControls” Assembly="__code" tagprefix=“web” %> 4. 將新控制項的實例添加到您的頁面:

<web:Literal2 ID=“literal2” runat=“server” Text=“test2” />

我使用Visual Studio對此進行了測試,對我來說一切正常。

引用自:https://stackoverflow.com/questions/3003343