- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在阅读 this article我仍然无法理解 Angular 的 UI 路由器如何与 ASP.Net 路由一起工作。
谁能用简单明了的方式解释从手动将 URL 输入浏览器(例如:http://myapp/stateOne)开始的完整生命周期。谁处理请求,ASP.Net?如果不是,如果页面在 ASP 介入之前由 ASP 提供服务,angular 如何拦截 URL 请求? AngularJS 何时与状态提供者一起出现?
我对此很困惑,找不到太多关于这个想法的信息。
除了问题之外,我还有其他一些我无法理解的事情。我正在编写一个应用程序,其中:
编辑:特别注意这部分,如果我理解正确的话,它使用黑魔法导致 routeTwo/6
将 routeTwo 页面加载到 UI-View 中加载索引页面。
HTML5 mode is working, but only in a very superficial way. A refresh of the page is sending the full URL to the server (as we have removed the scotch) which doesn't know what to do. We can fix this by reconfiguring MVC's RouteCollection properly. We need to be explicit about the route for each of our views, and then add a catch-all which sends all other URL's to our landing page, to be handled by Angular.
Update the RegisterRoutes method inside App_Start => RouteConfig.cs like so:
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}",
defaults: new { controller = "RoutesDemo", action = "Two", donuts = UrlParameter.Optional });
routes.MapRoute(
name: "routeThree",
url: "routesDemo/Three",
defaults: new { controller = "RoutesDemo", action = "Three" });
routes.MapRoute(
name: "login",
url: "Account/Login",
defaults: new { controller = "Account", action = "Login" });
routes.MapRoute(
name: "register",
url: "Account/Register",
defaults: new { controller = "Account", action = "Register" });
routes.MapRoute(
name: "Default",
url: "{*url}",
defaults: new { controller = "Home", action = "Index" });
}
最佳答案
快乐之路生命周期
客户端路由
加载应用程序后,ui-router ngRoute 或新组件路由器等客户端路由模块将为您控制路由并加载绑定(bind)到该路由的内容。但是,这只有在您始终维护用于引导 Angular 应用程序的预定义根路由时才能正常工作。
即www.site.com/Home#/login
或 www.site.com/Home!/login
如果使用 $locationProvider.hashPrefix('!')。 html5Mode(真);
。
完全重新加载您的根 URL 将加载您的主要索引内容,重新初始化 Angular 应用程序并选择相应的客户端路由(在本例中将是登录路由和与该路由关联的模块)。然而,一旦偏离这一点,就会遇到不愉快的路径问题。
不幸的道路
如果你请求一个不返回入口点的 URL 到 AngularJS 应用程序,Angular 没有办法拦截请求,随后将永远不会运行。因此,如果向不是 Angular 应用程序入口点的 URL 发出请求,您必须决定要如何处理它。一种常见的方法是重定向到索引。
其他问题
这可能看起来像什么
您可能想要声明一个路由来处理您的默认入口点:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", 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
主.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>
应用程序.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
})
});
关于c# - 带有 ASP.Net MVC RouteConfig 的 AngularJS Ui-Router。它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573403/
我有一个已发布的库,其中包含一个在其模板中使用 [routerLink] 的组件。在我的应用程序中安装库后,我收到错误 NullInjectorError:R3InjectorError(AppMod
/~/@ReMix-Run/Router/dist/router.cjs.js模块分析失败:/HOME/sharib/Desktop/Full Stack Developer Tutorial/MER
在 vuejs 2 中,我能够通过返回渲染 html 标签直接在路由器中渲染。我正在尝试使用 vue-router 4 在 vue3 中做同样的事情,但它似乎不起作用: { path:
在我的应用程序中,我使用 vue-router。当我使用 router.map({}) 将路由传递给路由器时,路由可以工作,但当我在构造函数中传递它们时,路由就不起作用。知道这是为什么吗? // wo
我正在 react 应用程序中实现路由。我对react-router 4.0相对于react-router-redux的优势感到困惑。我也对react-router-dom感到困惑。 react-ro
我有以下两条路线:/items和/items/buy。 每个路线在一个 View 中对应一个选项卡。两条路线均使用精确的 Prop 进行渲染,但导航至/items/buy时,仍将两个选项卡标记为事件选
我有一个带有 url/product/0 的新产品页面。当使用按钮保存产品时,我想显示“已成功保存”消息并将 url 更改为/product/1024 而无需实际导航到该页面,因为这会导致对页面上的产
我对此有些困惑。我定义了一条名为classes/:id的路线。在应用程序中导航到该路线时,将调用componentDidMount()。但是,当重新加载页面或复制并粘贴URL时,页面将完全加载,但根本
假设我有以下2条路线: ... ... 现在,当我尝试按路线/news时,会触发带有Home参数的param1的根路线... 我认为解决方案是在像/?param1这
我正在将 Vue Router 与 Vue 3 一起使用,并尝试添加一个包罗万象的路由以在用户尝试访问无效 URL 时重定向用户。当我尝试使用通配符 (*) 时,我将以下错误记录到控制台: Uncau
我在我的项目中使用react-router-dom 4.0.0-beta.6。我有如下代码: 我想在 HomePage 组件中获取查询参数。我找到了 location.search 参数,它看起来像
我正在使用 Vue 路由器。在我的代码中,我曾经有: 这有效,并且页面数据被传递到组件。但是如何使用路由器 View 执行相同的操作呢?这似乎不起作用: js: var vm = new Vue(
我目前正在一个项目中使用react-router-redux,除了我不知道如何访问react-router路由器之外,一切都工作正常。 @connect((state, props) => {
当使用链接时,路由器按预期工作,尽管我收到警告 [history] pushState is deprecated;使用推送代替。 使用react-router-redux中的routeActio
我想创建一个多页 Meteor 网络和移动应用程序。因此,我正在寻找路由服务。 来自 research ,我收集了Iron Router就是我要找的。但是很多教程也提到了Meteor.Router I
我正在使用 React Router(版本 4.0.0)和 Router组件有一个名为“history”的必需 Prop 。 我知道在以前版本的react-router中你可以导入browserHis
我正在使用 氟罗包用于导航。 Fluro 和 Flutter 正在使用“路由器”。所以他们的类(class)合并了。我怎么能解决这个问题? lib/routers/routers.dart:2:1:
自从我更新了 Vue.js 应用程序的节点包后,我在浏览器控制台中收到以下警告: [vue-router] 's tag prop is deprecated and has beenremoved
我正在尝试在我的应用程序中将 react-router 更新到 v2.6 并将 react-router-relay 更新到 v0.7,但我正在努力按照变更日志来解决所有重大变更。我想我解决了所有的变
router-view 和 router-link 组件无法在我的应用中解析不知道是什么问题 附上应用代码它是一个主页应用程序,带有类似 navbar 的东西,用于路由到 vue 组件,如 state
我是一名优秀的程序员,十分优秀!