2016-06-28 7 views
0

So habe ich ein Problem bei der Einrichtung meiner eckigen Routen.Angular templateUrl nicht zu MVC-Controller umleiten

Direkt auf den Punkt, meine definierten Winkel Routen treffen nicht meine MVC-Controller und damit Aktionsmethoden.

Die Aktionsmethode gibt Teilansichten zurück, die meine Vorlagen darstellen.

Hier ist ein Bild meiner Route Konfiguration. Hier

enter image description here

ist ein Bild meiner Controller-Aktionen.

enter image description here

Ich bin sicher, ich bin etwas fehlt, kann aber nicht, herauszufinden, was zu sein scheinen.

+0

Console Fehler? –

+0

Kein Konsolenfehler. – user3295929

+0

@PankajParkar, nun habe ich weiter auf Stapelüberlauf geschaut und bin auf eine Antwort von Ihnen hier gestoßen: http://stackoverflow.com/questions/28351124/mvc5-and-angular-js-routing-urls-not-matching in welcher Sie raten, den locationProvider nicht zu verwenden, da er das MVC-Routing beschädigt und Ihrem Rat folgt. Es sieht so aus, als ob Sie den locationProvider entfernen oder ihn auf false festlegen, um das Problem zu beheben. Ich muss noch untersuchen, warum das passiert – user3295929

Antwort

0

Nun, was für mich funktionierte, war die Einstellung für den $ locationProvider.html5Mode zu entfernen. Wie jemand in einem anderen Stack-Überlauf Beitrag erwähnt, hier MVC5 and Angular.js routing - URLs not matching mit dem LocationProvider in MVC scheint das Routing zu vermasseln. Ich bin immer noch zu untersuchen, warum genau das passiert, als alles, was ich dachte, war das Entfernen der '#' in der URL, aber scheint, als ob es mehr dazu

0

Dieses Beispiel hilft Ihnen, $ routeProvider und $ locationProvider besser zu verstehen.

Das einzige Problem, das ich sehe, sind relative Links und Vorlagen, die deswegen nicht richtig geladen werden.

from the docs regarding HTML5 mode

Seien Sie sicher, alle relativen Links, Bilder, Skripte etc. Sie entweder die URL Basis in den Kopf Ihrer Haupt-HTML-Datei() oder müssen Sie angeben, müssen überprüfen verwenden absolute Urls (mit/Start) überall, weil relative URLs mithilfe der ursprünglichen absoluten URL des Dokuments, die sich oft vom Stamm der Anwendung unterscheidet, in absolute URLs aufgelöst werden. In Ihrem Fall können Sie einen Schrägstrich/in href-Attribute ($ location.path macht dies automatisch) und auch templateUrl hinzufügen, wenn Sie Routen konfigurieren. Dadurch werden Routen wie example.com/tags/another vermieden und sichergestellt, dass Vorlagen ordnungsgemäß geladen werden.

Hier ist ein Beispiel, das funktioniert:

<div> 
    <a href="/">Home</a> | 
    <a href="/another">another</a> | 
    <a href="/tags/1">tags/1</a> 
</div> 
<div ng-view></div> 

Und

app.config(function($locationProvider, $routeProvider) { 
    $locationProvider.html5Mode(true); 
    $routeProvider 
    .when('/', { 
     templateUrl: '/partials/template1.html', 
     controller: 'ctrl1' 
    }) 
    .when('/tags/:tagId', { 
     templateUrl: '/partials/template2.html', 
     controller: 'ctrl2' 
    }) 
    .when('/another', { 
     templateUrl: '/partials/template1.html', 
     controller: 'ctrl1' 
    }) 
    .otherwise({ redirectTo: '/' }); 
}); 

Wenn Chrome Sie müssen dies von einem Server laufen zu lassen.

Verwandte Themen