Comment utiliser ASP.NET MVC et AngularJS de routage?
Je suis en train de travailler sur un nouveau ASP.NET MVC et AngularJS application qui est destiné à être une collection de SPAs. Je suis en utilisant l'architecture MVC zones concept de séparer chaque individu SPA, et puis je suis en utilisant AngularJS au sein de chaque MVC zone pour créer le SPA.
Depuis que je suis nouveau sur AngularJS et n'ont pas été en mesure de trouver une réponse quant à la combinaison des deux MVC et AngularJS de routage, je pensais que je poste ma question ici pour voir si je pouvais obtenir de l'aide.
J'ai le standard MVC configuration du routing, qui sert chaque MVC zone.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.AppendTrailingSlash = true;
}
Cela fonctionne très bien et me donne une Url comme:
http://servername/Application1/
http://servername/Application2/
Maintenant, à l'intérieur de chaque domaine d'application, je suis en train d'utiliser AngularJS routage, également à l'aide de $locationProvider.html5Mode(true); de sorte que je reçois le côté client de routage à l'intérieur de chaque zone, quelque chose comme:
http://servername/Application1/view1
http://servername/Application1/view2
http://servername/Application2/view1/view1a
http://servername/Application2/view2/view2a
http://servername/Application2/view3
Voici mon AngularJS routage extrait Application1:
app1.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
var viewBase = '/Areas/Application1/app/views/';
$routeProvider
.when('/Application1/view1', {
controller: 'View1Controller',
templateUrl: viewBase + 'view1.html'
})
.when('/Application2/view2', {
controller: 'View2Controller',
templateUrl: viewBase + 'view2.html'
})
.otherwise({ redirectTo: '/Application1/view1' });
$locationProvider.html5Mode(true);
}]);
Donc, d'abord, il semble fonctionner (au moins l'URL semble correct). Mais, quand j'ai commencer à naviguer entre des régions ou des points de vue au sein d'une zone, ou même si j'actualise, quelque chose est “perdu” et les choses ne fonctionnent pas. L'URL a toujours l'air correct mais les points de vue ne sont pas disponibles et ne sont pas chargés correctement.
Toute aide/conseils sur la façon de faire ASP.NET MVC et AngularJS routage travailler ensemble pour me donner le scénario décrit ci-dessus?
Merci!!!
Vous devez vous connecter pour publier un commentaire.
Merci pour la réponse, agbenyezi. J'ai regardé l'article que vous avez fourni, mais il ne m'a fait retour à l'endroit où j'étais de toute façon.
Cependant, j'ai été en mesure de le comprendre et de le faire fonctionner. La réponse s'est avéré être relativement simple, mais il a fallu un certain temps et beaucoup de recherche autour de. De toute façon, depuis que je suis en utilisant MVC domaines, l'accès à une URL de
http://servername/Application1/view[x]
(où Application1 est le contrôleur MVC (dans la zone) et vue1, vue2, vue3, etc. sont Angularjs points de vue), le MVC partie de l'ensemble de la demande a été de se confondre et d'essayer de trouver une action nommée vue[x] dans l'Application1 contrôleur (qui n'existe pas).Ainsi, dans le domaine de l'AreaRegistration classe (où c'est la définition des itinéraires spécifiques pour la région), j'ai juste besoin d'ajouter une sorte de fourre-tout de l'itinéraire avant tout par défaut MVC itinéraires de toujours forcer à l'action Index du contrôleur d'Application. Quelque chose comme:
Maintenant, lorsque je navigue à
http://servername/Application1/view[x]
il achemine vers l'Application1 MVC contrôleur, action Index, puis Angularjs prend sur les routes pour les différents points de vue, tout en ayant le HTML5 routage construire dans l'URL.Espoir qui aide les autres.
Merci!
(/Application1/Edit/2)
. Il sera de nouveau rediriger vers l'index?