asp.net-mvc - AngularJS $routeProvider 和 ASP.NET MVC 中的相对 URL

标签 asp.net-mvc angularjs hashbang

我是 AngularJS 的新手。只是想尝试使用 $routeProvider 的相对 URL。

场景如下:

我有一个“编辑”页面,该页面的 ASP.NET MVC 链接为:

http://localhost/Workflow/Edit

因此 ASP.NET MVC Controller 是“WorkflowController”,操作是“Edit”。对于局部 View ,我有 Controller 操作,每个操作都返回一个局部 View ,如下所示:

    public ActionResult WorkflowTransition()
    {
        return PartialView("WorkflowTransition");
    }

    public ActionResult WorkflowTransitionApprovers()
    {
        return PartialView("WorkflowTransitionApprovers");
    }

以下是 AngularJS 模块配置 - 注意:为每个路由调用 PartialView(如上所述)(这可能是不正确的):

    $routeProvider.when('Workflow/WorkflowTransition', {
        templateUrl: '/Workflow/WorkflowTransition',
        controller: 'transitionCtrl',
    });
    $routeProvider.when('Workflow/WorkflowTransitionApprovers', {
        templateUrl: '/Workflow/WorkflowTransitionApprovers',
        controller: 'approversCtrl'

    $routeProvider.otherwise({
        redirectTo: '/'
    });

注意:我没有指定以下任何一项:

$locationProvider.html5Mode(false);

$locationProvider.html5Mode(false).hashPrefix('!');

href 链接是这样指定的:

<a href="#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a>

这会生成这种形式的链接:

http://localhost/Workflow/Edit#/Workflow/WorkflowTransition

这显然是错误的(点击链接没有做任何事情可能是因为浏览器试图导航到散列),所以我尝试了前导“/”,但也没有成功:

<a href="/#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a>

如果我直接导​​航部分内容,即 http://localhost/Workflow/WorkflowTransition,浏览器会按原样呈现 html(连同 angularjs 花括号 {{}})。

我的问题是:AngularJS 如何处理“#”或“#!”在确定相对 URL 时?例如执行此路由(假设我从 anchor 标记中的 URL 中删除/Edit 部分):

$routeProvider.when('Workflow/WorkflowTransition', 匹配 URL:

http://localhost/Workflow/#WorkflowTransition ?

它是否从 URL 中删除“#”,然后根据 $routeProvider.when() 中的 URL 模式检查它?

有人可以为相对 URL 推荐正确的路由吗?

最佳答案

根据我的观察,匹配路由时必须删除散列。我有一个链接

<a href="#Objects">

产生 URL

http://localhost:55033/#/Objects

我的路线设置是

$routeProvider.when("/Objects", {
    templateUrl: "objects.html",
    controller: ObjectCtrl
});

这按预期工作,引入了正确的部分。请注意,在这种情况下,我不是通过 ASP.NET MVC Controller 呈现部分。相反,我有 objects.html 作为纯 html 文件,我在 href 中使用散列,因此 ASP.NET MVC 路由不会启动。

关于asp.net-mvc - AngularJS $routeProvider 和 ASP.NET MVC 中的相对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993444/

相关文章:

javascript - 使用 jQuery 检索跨度中的数据,并使用 jQuery 插入该数据

javascript - 无法更新函数angularjs内的变量值

ajax - Hashbang URL 使网站难以被 Google 抓取?

c# - DataAnnotations 的 FileExtensions 属性在 MVC 中不起作用

sql - ASP.NET MVC : Execute Razor from DB String?

javascript - 来自 ng-repeat 的新动态变量在 ng-switch 外部不可见

javascript - Angular 等待 module.run 中的 promise

ember.js - 使用 Ember.js 的 Hashbang URL

Java Servlet - 重定向 URL

asp.net-mvc - 64 位 ASP.NET MVC 应用程序无法运行