Wo sollte ich auch ein Skript für eine view-Komponente?
Habe ich versucht, indem ein Abschnitt-Skript in eine view-Komponente die view.
@section scripts {
<script src="~/somepath" asp-append-version="true"></script>
}
Ich habe auch die Render-Abschnitt im freigegebenen layout
@RenderSection("scripts", required: false)
Wenn verwendet, in teilweise Ansichten und an anderer Stelle in das Projekt, das Skript lädt Ordnung. Allerdings, wenn Sie in einer View-Komponente das script nicht geladen.
Ich glaube, ich könnte das script in das section-tag jede Ansicht, die Aufrufe der Komponente. Ich denke, dies passt nicht mit der autarke Charakter einer view-Komponente.
Gibt es einen anderen Weg kann ich das machen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte auch Probleme mit den Abschnitten tag in viewcomponents. Stellt sich heraus, zu den besten meines Wissens, gibt es keine Unterstützung für ihn in viewcomponents. Sehen https://github.com/aspnet/Home/issues/2037
Jake Shakesworth umgesetzt hat, eine tag-Helfer wie gezeigt in:
Javascript in einer View Komponente
Auf der anderen Seite konnte man nur schließen Sie Sie in den viewcomponent als
Meine Anforderung war es, zu zeigen Sie eine google-Karte von einem viewcomponent. Problem war das, dass das Skript immer aufgerufen, bevor die jquery, jquery.ui-Sachen.
Durch die Verwendung aufschieben, sagen Sie den parser nicht ausführen, bis das Dokument geladen hatte, wodurch das problem des mit zu es in das layout für die ordnungsgemäße Ausführung.
Aufschieben wird unterstützt von chrome, safari und ie(10+), ff(3.6+), o(15+)
Hoffe, das hilft
Dies ist ein Beispiel von meinem code:
Beachten Sie, dass Sie wahrscheinlich benötigen, um zu schreiben, etwas Logik, um zu verhindern, dass das Skript aufgenommen zu werden, mehrere Male, wenn die view-Komponente vorhanden ist, die mehr als einmal auf einer Seite, die war nicht mein Fall
maps
undservicearea
scripts?Aus, was ich gesehen habe, ein
"@section Scripts {}"
im ViewComponent wird ignoriert und nicht dargestellt in den einschlägigen@RenderSection()
desViewComponents _*layout.cshtml
Warum das so ist, weiß ich nicht.
Dies ist, wie ich näherte sich dem einfügen von Skripten in eine view-Komponente, mit Asp.net core 2.0.
Zuerst erstellte ich eine teilweise Ansicht, die ich innerhalb der view-Komponenten view-Ordner.
Pfad: Views/Shared/Komponenten/CalendarWidget/_CalendarScriptsPartial.cshtml
_CalendarScriptsPartial.cshtml
Dann brachte ich die Skripte über den Html-teilweise async-Helfer-Methode in meinem view Ansicht "Komponenten".
Pfad: Views/Shared/Komponenten/CalendarWidget/Default.cshtml
Standard.cshtml
Und der Vollständigkeit halber, hier ist meine Ansicht Komponenten-Klasse.
Pfad: ViewComponents/CalendarWidgetViewComponent.cs
CalendarWidgetViewComponent.cs
Hinweis: Async ist derzeit nicht erforderlich, in meinem Beispiel, aber ich möchte Spritzen, ein repository in der ctor der Klasse, die mit async/await.
Hinweis 2: Sobald ich fertig bin, ist die Entwicklung dieses ich planen die Bündelung und minifying alles, was zu einem Skript.
View-Komponente in ASP.NET Kern verhält sich wie unabhängige Sicht mit einem separaten controller, so können Sie FALTENBALG tag über Ihren view-Komponente
danach einfügen Balg-tag im Zusammenhang Skript,zum Beispiel: