Wahrscheinlich wird dieser HTML-Code eingefügt, bevor jQuery tatsächlich referenziert wird. Wenn Sie beispielsweise jQuery bis zum schließenden body-Tag nicht referenzieren (wie Sie sollten), wird dies ausgeführt, bevor jQuery tatsächlich existiert. Der beste Weg, um mit dieser Art von Sache umzugehen, ist mit Abschnitten. Sie können in Ihrem Layout einen Abschnitt für Skripts definieren und dann sicherstellen, dass dieser Abschnitt unter den erforderlichen Abhängigkeiten wie jQuery liegt.
_Layout.cshtml
<script src="/path/to/jquery.js"></script>
@RenderSection("Scripts", required: false)
</body>
AwesomeView.cshtml
@section Scripts
{
@if (Session["UserId"] != null)
{
<script>$('#btnTest').click();</script>
}
}
Diese im folgenden HTML führt generiert wird (vorausgesetzt, die Session-Variable nicht null ist natürlich:
<script src="/path/to/jquery.js"></script>
<script>$('#btnTest').click();</script>
</body>
Es ist wichtig zu beachten, dass dies nur mit Standardansichten funktioniert. Teilansichten können keine Abschnitte definieren. Wenn Sie also ein wenig Skript in ein Teil einfügen müssen, müssen Sie einen anderen Ansatz für die Verschiebung der Ausführung wählen. Im Allgemeinen ist die beste Methode, an diesem Punkt einfach window.onload
direkt nutzen:
var onload = window.onload
window.onload = function() {
onload();
// your code here
}
Das sollte sicherstellen, dass jQuery bereits geladen wurde. Es ist jedoch wirklich besser, JS-Code in Partials überhaupt nicht zu verwenden. Es gibt eine Reihe von Problemen, die dazu führen können, dass Ihr Code im Allgemeinen sehr fragmentiert und brüchig wird.
Wie sieht das gerenderte Markup (html auf der Client-Seite) aus? und wo bezieht es sich auf jQuery? weil die Warnung allein keine Bibliothek erfordert. – dlatikay
Ihre Frage ist nicht klar. – Liam
Wahrscheinlich wird dieser HTML-Code eingefügt, bevor jQuery tatsächlich aufgerufen wird. Wenn Sie beispielsweise bis zum abschließenden body-Tag nicht auf jQuery verweisen, wird dies ausgeführt, bevor jQuery existiert. –