วันอังคารที่ 20 พฤษภาคม พ.ศ. 2557

ASP.NET Custom Control วิธีนำ Control ที่เขียนเองมาใช้ C#

Here is how I did it, step by step starting from nothing. This first method uses a second project/assembly. For the App_code version scroll down.
Web Application Project Method
  1. Create a new ASP.Net Web Application. Take note of the name, mine is called WebApplication2. If you already have an existing web application, which is likely, double click the properties section of your project and check the "Assembly Name" property, make note of it.
  2. Create a new Class in the web applcation named Literal.cs
  3. Put in code similar to the following for the class defenition:
    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
  4. Add the following register tag to the top of your aspx page
    <%@ Register assembly="WebApplication2" namespace="CustomControls" tagprefix="web" %>
If your assembly name was different then change it here. I noticed that when I did this in VB.Net the namespace was WebApplication1.CustomControls instead of just CustomControls like it was in C#, kind of odd.
  1. Add the new control to your page:
    <web:Literal ID="Literal1" runat="server" Text="test" />
Seperate Project Method
  1. Create a new Empty Website (ASP.Net).
  2. Add a new ASP.Net Server Control library named CustomControls to the solution.
  3. Add a new Class to the new project called Literal (I'm using C# so my file is named Literal.cs). Below is my super basic code, that I believe should match the code described in the question.
    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
  4. Add a reference to the CustomControls project to your website.
  5. Add the assembly registration to the top of your aspx page:
    <%@ Register assembly="CustomControls" namespace="CustomControls" tagprefix="web" %>
  6. Add a new instance of the control to your page:
    <web:Literal ID="Literal1" runat="server" Text="test" />
In App_Code Method
  1. Create a new Empty Website (ASP.Net).
  2. Add a new Class to the App_Code folder Literal2 (I'm using C# so my file is named Literal2.cs). Below is my super basic code, that I believe should match the code described in the question. I called it 2 so that you can use this in conjunction with the method described above without getting compile errors
    namespace CustomControls
    {
        public class Literal2 : System.Web.UI.WebControls.Literal
        {
        }
    }
  3. Register the assembly/namespace for app_code in your aspx page by adding the following line to the top
    <%@ Register Namespace="CustomControls" Assembly="__code" tagprefix="web" %>
  4. Add an instance of the new control to your page:
    <web:Literal2 ID="literal2" runat="server" Text="test2" />
I tested this using visual studio and it all worked fine for me.

From : http://stackoverflow.com/questions/3003343/custom-control-in-asp-net-c-sharp