Frage

Ich habe ein einfaches benutzerdefiniertes Steuerelement, das nur erbt von der Literal Kontrolle und hat keine Erweiterungen noch Code leer ist.

Namensraum: Custom

Klassenname: Literal: System.Web.UI.WebControls.Literal

Das nächste, was ich registriert diese Steuerung in der aspx Seite wie folgt:

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

(las ich in paar Tutorials, dass dies eine der Möglichkeiten ist, es zu registrieren, neben web.config etc.)

Immerhin kein Intellisence für mich, und worse- Ich bekomme einen Parse-Fehler ‚unbekannter Server-Tag: web‘. Wenn ich versuche, die Seite mit der Steuerung in ihr auszuführen

Ich habe ‚neues Projekt erstellen‘ und nicht neue Webseite, falls diese Informationen benötigt wird.

Was mein Problem sein könnte?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Hier ist, wie ich es tat, Schritt für Schritt aus dem Nichts. Dieses erste Verfahren verwendet ein zweites Projekt / Montag. Für die APP_CODE Version nach unten scrollen.

Web Application Project Methode

  1. Erstellen Sie ein neues ASP.Net Web Application. Beachten Sie den Namen, ist mein WebApplication2 genannt. Wenn Sie bereits eine bestehende Web-Anwendung haben, die wahrscheinlich ist, die doppelte Eigenschaften Abschnitt des Projekts klicken und überprüfen Sie die „Assembly-Name“ Eigenschaft, notieren davon.
  2. Erstellen Sie eine neue Klasse in der Web-applcation namens Literal.cs
  3. Setzen Sie in Code ähnlich dem folgenden für die Klasse defenition:

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  4. Fügen Sie die folgenden Registerkennzeichen an die Spitze Ihrer aspx Seite

    <% @ Register Baugruppe = "WebApplication2" namespace = "Custom" TagPrefix = "web" %>

Wenn Ihr Assemblierungsnamen anders dann war es hier ändern. Ich bemerkte, dass, wenn ich das tat in VB.Net der Namespace WebApplication1.CustomControls statt nur Custom war, wie es in C #, irgendwie merkwürdig war.

  1. Fügen Sie die neue Steuerung auf Ihrer Seite:

Seperate Projektmethode

  1. Erstellen Sie eine neue leere Webseite (ASP.Net).
  2. Fügen Sie einen neuen ASP.Net Server Control Bibliothek mit dem Namen Custom zur Lösung.
  3. Fügen Sie eine neue Klasse in das neue Projekt namens Wörtliche (Ich bin mit C # so meine Datei Literal.cs benannt ist). Unten ist mein Super-Basic-Code, dass ich den Code in der Frage beschriebenen übereinstimmen glauben sollte.

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  4. Fügen Sie einen Verweis auf die Custom auf Ihre Website projizieren.

  5. Fügen Sie die Montage Anmeldung an die Spitze Ihrer aspx Seite:

    <% @ Register Baugruppe = "Custom" namespace = "Custom" TagPrefix = "web" %>

  6. Fügen Sie eine neue Instanz der Kontrolle auf Ihrer Seite:

In App_Code Methode

  1. Erstellen Sie eine neue leere Webseite (ASP.Net).
  2. Fügen Sie eine neue Klasse auf den Ordner App_Code Literal2 (Ich bin mit C # so meine Datei Literal2.cs benannt ist). Unten ist mein Super-Basic-Code, dass ich den Code übereinstimmen glauben sollte in der Frage beschrieben. Ich nannte es 2, so dass Sie diese in Verbindung verwenden, können mit dem oben beschriebenen Verfahren der Kompilierung Fehler, ohne sie

    namespace CustomControls
    {
        public class Literal2 : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  3. Register der Montage / Namensraum für app_code in Ihrer Aspx-Seite, indem Sie die folgende Zeile nach oben Hinzufügen

    <% @ Register Namespace = "Custom" Assembly = "__ Code" TagPrefix = "web" %>

  4. Fügen Sie eine Instanz der neuen Steuerung auf Ihrer Seite:

Getestet habe ich diese mit Visual Studio und es ist alles in Ordnung für mich gearbeitet.

Andere Tipps

Sie können auch Ihre Steuerung in web.config registrieren, wenn Sie es auf anderen Seiten verwenden möchten

<pages>
        <controls>
          <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="web" namespace="MyProject.CustomControls" assembly="MyProject" />
        </controls>
      </pages>

Für Web-Site Dies funktioniert

<add tagPrefix ="web" namespace="ASP.App_Code.CustomControls" />

Das Problem liegt in Ihrem <%@ Register TagPrefix="web" Namespace="CustomControls" %> Tag: es fehlt den Assemblierung-Name

Es muss <%@ Register TagPrefix="web" Namespace="CustomControls" Assembly="YourAssemblyName" %> werden. Wenn Sie Schwierigkeiten der Suche nach dem Montag Namen für Ihre Klasse haben hier ein paar Hinweise:

  1. Wenn Sie die Klasse in der Web-Anwendung Visual Studio-Projekt erstellt oder in einem separaten DLL (Shared Library) Projekt, dann das Projekt der rechte Maustaste und wählen Sie Eigenschaften die Assembly-Namen zu erhalten
  2. Wenn Sie die CS-Datei in App_Code-Verzeichnis erstellt, sollten ASP.App_Code arbeiten

Ansonsten geben Sie uns bitte einige Informationen über Projekt-Layout!

Die einfachste Sache zu tun, Drag-and-Drop die Literal.ascx auf der Seite (wenn die Seite in der gleichen Lösung ist) .Wenn die Seite eine andere Lösung ist, können Sie die Kontrolle VS-Toolbox hinzufügen könnte und Drag-and-Drop die Steuerung auf der Seite.

Sie haben das Attribut src.

<%@ Register TagPrefix="web" Namespace="CustomControls" Src="PathToYourCustomControl" %> 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top