Erstellen Sie benutzerdefinierte HTML-Hilfsprogramm in ASP.Net Core

8

Ich möchte meinen benutzerdefinierten HTML-Helfer wie in MVC erstellen, aber ich finde nicht, wie man in der richtigen Weise macht.

Ich habe herausgefunden, wie man benutzerdefinierte Tag-Helfer aber keine HTML-Helfer erstellt.

Danke für Ihre Zeit!

    
Duefectu 04.02.2017, 10:28
quelle

4 Antworten

7

Für mich dachte meine HTML-Helfer funktionierten nicht, bis ich bemerkte, dass die Erweiterungsmethode jetzt auf IHtmlHelper nicht HtmlHelper .

ist

Also für .net Kern :

%Vor%

Anstelle von .net :

%Vor%

BEARBEITEN: Ich habe auch den Rückgabetyp für .net core so geändert, dass er IHtmlContent ist, wenn man etwas wie HtmlContentBuilder verwendet, um HTML-Inhalt zu verfassen und Rückgabe, die IHtmlContent

zurückgibt     
dougajmcdonald 04.12.2017, 10:42
quelle
22

HTML-Hilfeprogramme scheinen in ASP.NET Core unterstützt zu werden und warten auf Dokumentation:

Ссылка

Mit Blick auf die ASP.NET Core-Quelle arbeiten sie ziemlich ähnlich wie ältere Versionen von ASP.NET MVC:

Ссылка

Beispiel

MyHTMLHelpers.cs:

%Vor%

_ViewImports.cshtml (zweite Zeile ist die wichtige Änderung):

%Vor%

MyView.cshtml:

%Vor%

Ausgaben:

  

Hallo Welt

     

& lt; stark & ​​gt; Hallo Welt & lt; / stark & ​​gt;

    
Akaoni 20.04.2017 05:57
quelle
3

Dies wurde gut von Danny van der Kraan in seinem Blogpost hier . Die Antwort unten ist ein Auszug aus diesem Beitrag:

ASP.NET Core 1.0 [MVC 6] kommt mit einer neuen aufregenden Funktion namens TagHelpers . In ASP.Net Core 1.0 gibt es kein Konzept von HTML Helper wie in MVC.

Was sind TagHelpers?

TagHelpers kann als die Evolution von HTML-Helfern gesehen werden, die mit dem Start des ersten MVC -Frameworks eingeführt wurden. Um einen Kontext zu schaffen, müssen Sie sich vorstellen, dass Sie mit dem klassischen ASP die Generierung von HTML nur über benutzerdefinierte Subroutinen automatisieren können. Danach kam ASP.NET mit Serversteuerelementen, mit Ansichtsstatus als größtes Plus, um das Aussehen von Desktop-Anwendungen zu simulieren und den Übergang für Desktop-Entwickler zu erleichtern. Aber wir wissen alle, was passiert, wenn wir versuchen, Quadrate in runde Löcher zu stecken. Wir mussten uns der Tatsache stellen, dass Web-Entwicklung nichts mit Desktop-Entwicklung zu tun hat. Um mit der richtigen Webentwicklung Schritt zu halten, wurde das ASP.NET MVC -Framework mit HTML-Helfern gestartet, um die HTML-Ausgabe zu automatisieren. Aber HTML-Helfer sind nie wirklich geliert, besonders nicht mit Front-End-Entwicklern und Designern. Eines der Hauptprobleme war, dass man bei der Arbeit an Ansichten viel von den spitzen Klammern (HTML, CSS) auf C# (Razor syntax) wechselte, was das Erlebnis unnötig unangenehm machte. [MVC 6] möchte dieses und einige kleinere Probleme beheben, indem Sie TagHelpers einführen. Beispiel HTML-Helfer:

%Vor%

Mit dem Anker TagHelper würde das so aussehen:

%Vor%

PS: Bitte beachten Sie, dass asp- nur eine Konvention ist, aber dazu später mehr.

Die Ausgabe, die im Browser gerendert wird, ist für beide identisch:

%Vor%

PS: Vorausgesetzt, die Standardroute wurde nicht geändert.

Weitere Informationen zu TagHelpers klicke hier

    
MANISH KUMAR CHOUDHARY 04.02.2017 10:39
quelle
2

Ich konnte die HtmlHelper-Erweiterungsmethoden nie zum Laufen bringen. Ich erhielt immer:

  

'IHtmlHelper' enthält keine Definition für ' MethodName ' und keine Erweiterungsmethode ' MethodName ', die ein erstes Argument vom Typ 'IHTmlHelper' akzeptiert fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Obwohl ich den richtigen Namespace in meiner _ViewImports.cshtml -Datei hatte. Also entschied ich mich, die Fähigkeit von Razor-Seiten zu nutzen, um jetzt Dienste zu injizieren, die für die Abhängigkeitsinjektion registriert wurden. Als ein Beispiel muss ich einige Werte aus meiner Konfigurationsdatei in meine _Layout.cshtml -Datei einfügen. Also habe ich folgendes gemacht:

1) Definierte eine IConfigurationHelperService -Schnittstelle:

%Vor%

2) Definierte eine Implementierung dieser Schnittstelle in einer ConfigurationHelperService-Klasse (die selbst die Abhängigkeitsinjektion verwendet, um die reguläre Konfigurationsklasse zu erhalten):

%Vor%

3) Registrierte den Service für die Injektion über ConfigureServices in Startup.cs:

%Vor%

4) Ich habe den richtigen Namespace als using-Anweisung in meine Datei _ViewImports.cshtml hinzugefügt.

5) Verwenden Sie das Schlüsselwort @inject , um es für die Verwendung in der Datei _Layout.cshtml zu definieren.

%Vor%

Es funktionierte großartig für mich, und ich kann viel mehr Anwendungen auf einfacheren Seiten sehen, wo das Definieren von Modellen zu viel Arbeit wäre.

    
James Eby 30.11.2017 09:09
quelle