3 Stimmen

Wie erhalten Sie jQuery Intellisense arbeiten, wenn Sie eine Url Helper-Erweiterung implementiert haben, um die URL Ihrer Skript-Dateien zu erhalten?

Ich habe die Url Helper Erweiterungen implementiert, die Kazi Manzur in seinem MVC Best Practices Guide vorgeschlagen hat ici

Meine Url Helper-Erweiterungsmethode zum Abrufen einer Skriptdatei:

public const string ScriptDir = "~/Assets/Scripts";
public static string Script(this UrlHelper helper, string fileName)
{
    return helper.Content(string.Format("{0}/{1}", ScriptDir, fileName));
}

Und in meiner Master-Seite füge ich einfach das jQuery-Skript zu meiner Seite wie folgt hinzu:

<script type="text/javascript" src="<%= Url.Script("jquery-1.3.2.min.js") %>"></script>

Wie würde ich Intellisense für jQuery arbeiten, da Visual Studio nicht zur Designzeit wissen, dass jquery-1.3.2.min.js in der Master-Seite enthalten ist?

Die Abhilfe, die ich derzeit einschließlich der folgenden Code (hardcode meine -vsdoc Skript Standort) in meinem Master-Seite. Dies kann die beste Lösung im Moment sein:

<% if (false) { %> <script type="text/javascript" src="~/Assets/Scripts/jquery-1.3.2-vsdoc.js"></script> <% } %>

9voto

Steven Lyons Punkte 7958

Sie müssen den Teil "-vsdoc" nicht in den Dateinamen aufnehmen. Die vsdoc-Intellisense-Datei wird automatisch übernommen. Allerdings ist diese grundlegende Umgehung der einzige Weg, den ich in der Lage, intellisense mit Jquery und eine Methode für den Skriptpfad arbeiten zu bekommen gewesen. Außerdem muss ich das Workaround-Markup in alle .ascx-Steuerelemente oder Ansichten einfügen, die nicht auf die Masterseite verweisen, für die ich Intellisense haben möchte.

Die Umgehung, die ich verwende, ist die gleiche wie die Ihre, ohne "-vsdoc":

<% if (false) { %>
    <script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script> 
<% } %>

Die Umgehung macht jedoch den Zweck der Pfadmethode zunichte, da Sie den Pfad ohnehin hart kodieren müssen. Nicht viel von einer Antwort - nur eine Bestätigung des gleichen Problems.


Wenn Sie Kompilieren für Ansichten aktivieren führt der obige Code zu einer Warnung vor unerreichbarem Code. Dieser Code, der Direktiven verwendet, führt nicht zu einer Warnung und wird nicht in die Ansicht kompiliert:

<% #if (false) %>
    <script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script> 
<% #endif %>

3voto

Jordan S. Jones Punkte 13267

Einfach:

/// <reference path="jquery-1.3.2-vsdoc.js" />

Oder wie auch immer der passende Name lautet.

Als zusätzlichen Bonus können Sie das Folgende als Referenz für VS Intellisense mit Javascript verwenden.

1voto

tsimon Punkte 8182

Er schlägt vor, diese URLs einer Hilfsmethode zuzuordnen, um Doppelarbeit zu vermeiden. Im Falle einer Masterseite haben Sie jedoch bereits einen zentralen Ort für diese Informationen (d. h. Sie wiederholen sich nicht).

In diesem Fall würde ich also sagen, dass es nicht nur unnötig, sondern sogar schädlich ist. Intellisense ist in diesem Fall viel wichtiger als sklavische 100%ige Konsistenz.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X