2009-03-03 22 views
1

Meine asp.net-MVC-Ansicht hat eine enthaltene Javascript-Datei. Diese JavaScript-Datei hat die folgende Zeile:Haben asp.net-mvc generierte URLs in der enthaltenen JavaScript-Datei?

$("input[id='SearchBag.CompanyName']").autocomplete("Search.mvc/AutoComplete/"); 

Dies funktioniert. Groß. Aber es wäre noch besser, wenn ich den Pfad der Autovervollständigung durch eine generierte URL ersetzen könnte. Wenn ich die Routing-Pfade ändere, muss ich keinen Code in meinen JS-Dateien ändern. In nicht enthaltenen Dateien kann ich gehen wie

$("input[id='SearchBag.CompanyName']").autocomplete('<%=Url.Action("AutoComplete", "Search") %>) 

Aber in den enthaltenen Dateien wird dies nicht geparst werden. Irgendwelche Ideen?

Antwort

1

Unter der Annahme, Sie tatsächlich etwas ein wenig anspruchsvoller zu tun, als Sie gebucht haben ...

Sie einen „Javascript“ Controller, deren Ansichten haben text/JavaScript-Inhalte erstellen können.

Der Inhalt der Ansicht würde hauptsächlich literales Javascript sein, aber es würde Ihnen erlauben, <% =%> Helfer zu verwenden.

Sie müssen das Antwort-Caching entsprechend konfigurieren, um übermäßige Anforderungen für diesen Inhalt zu vermeiden.

Aber für einfache literale URLs wie in Ihren Fragen bin ich mir nicht sicher, es wäre die Mühe wert.

+0

Ich frage mich, ob es praktisch wäre, einen eingebauten (dh Teil des Frameworks) Controllers und/oder ActionResult zu haben, der das Javascript zum Erstellen von URLs aus Vorlagen generiert und auch Ihre aktuelle Routenkonfiguration enthält? –

+0

Eigentlich ist es genauso einfach wie das Beispiel zeigt. Ich hatte auf eine 3-Minuten-Reparatur gehofft, die mich einige Stunden später retten könnte. Aber mit YAGNI im Hinterkopf denke ich, dass das Erstellen eines Controllers dafür wahrscheinlich etwas übertrieben ist :) Danke für die Antwort. –

Verwandte Themen