c# – 带有ASP.Net MVC RouteConfig的AngularJS Ui-Router.它是
我正在阅读
this article,我仍然无法理解Angular的UI路由器如何使用ASP.Net路由.
有人能够以简单明了的方式解释从手动输入URL到浏览器的整个生命周期(例如:http://myapp/stateOne).谁处理请求,ASP.Net?如果没有,如果页面由ASP提供,在它可以介入之前,角度如何拦截URL请求? AngularJS何时与国家提供商合作? 我对此非常困惑,对这个想法找不到多少. 除了这个问题,我还有其他一些我无法理解的事情.我在写一个应用程序: >主页/ Index.cshtml – >登陆页面基于状态提供内容(例如:它具有ui-view =“content”,其应该依次提供其中的Categories / Index.cshtml).那么,我将如何设置“默认状态”,以便导航到索引会加载主页和ng-view内容中的默认类别? 编辑:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "routeOne",url: "routesDemo/One",defaults: new { controller = "RoutesDemo",action = "One" }); routes.MapRoute( name: "routeTwo",url: "routesDemo/Two/{donuts}",action = "Two",donuts = UrlParameter.Optional }); routes.MapRoute( name: "routeThree",url: "routesDemo/Three",action = "Three" }); routes.MapRoute( name: "login",url: "Account/Login",defaults: new { controller = "Account",action = "Login" }); routes.MapRoute( name: "register",url: "Account/Register",action = "Register" }); routes.MapRoute( name: "Default",url: "{*url}",defaults: new { controller = "Home",action = "Index" }); } 解决方法
快乐的路径生命周期
>由于客户端在从URL请求内容时尚未加载任何资源,因此向服务器发出请求. ASP.NET路由选择请求并返回绑定到该路由的任何内容. 客户端路由 加载应用程序后,客户端路由模块(如ui-router ngRoute或新组件路由器)将为您控制路由并加载绑定到该路由的内容.但是,只有在始终维护到用于引导Angular应用程序的预定义根路由时,这才能正常工作. I.E. www.site.com/Home#/login或www.site.com/Home!/login如果使用$locationProvider.hashPrefix(‘!’).html5Mode(true);. 完全重新加载根URL将加载主索引内容,重新初始化角度应用程序并选择相应的客户端路由(在这种情况下将是与该路由关联的登录路由和模块).但是,一旦你偏离了这一点,就会遇到不愉快的路径问题. 不快乐的道路 如果您请求的URL不返回AngularJS应用程序的入口点,则Angular无法拦截请求,并且随后将永远不会运行.因此,如果正在向不是Angular应用程序入口点的URL发出请求,则必须决定如何处理它.一种常见的方法是重定向到索引. 其他问题 > Home / Index.cshtml – 由于你混合了两个世界,我建议允许Angular在加载后控制并驱动所有导航.这将包括调用部分路径并加载剃刀视图,就好像它们是模板一样(如果你想继续使用Razor). 这可能是什么样的 您可能希望声明一个处理默认入口点的路线: public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",action = "LoadMain",id = UrlParameter.Optional } ); } public class HomeController : Controller { public ActionResult LoadMain() { return View("Main.cshtml"); } } public class CategoriesController : Controller { public ActionResult Index() { return PartialView("Index.cshtml"); } } 这样,如果用户点击www.site.com,我们将从/ Home / LoadMain返回内容.此内容将包括我们所需的所有Angular引用(Angular,UI-Router,我们的主应用程序等),这将允许我们将客户端路由默认为/ home并随后加载/ Home / Index Main.cshtml: <head> <script src="//angular.js"></script> <script src="//angular-ui-router.min.js"></script> <script src="app.js"></script> <body ng-app="app"> <div ui-view></div> </body> app.js var app = angular.module('app',['ui.router']); app.config(function($stateProvider,$urlRouterProvider) { $urlRouterProvider.otherwise('/home'); $stateProvider .state('home',{ url: '/home',templateUrl: '/Categories/Index' // corresponds to an MVC partial route }) .state('login',{ url: '/login',templateUrl: '/Login/Index' // corresponds to an MVC partial route }) }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |