IIS 虚拟目录与 MVC6 Angular 路由 1.4.5

IIS Virtual Directory with MVC6 Angular Routing 1.4.5

我有一个 MVC6/Angular 站点,该站点将有多个应用程序,但目前只有一个。完成后,示例将是 App1App2 成为 .cshtml 页面,只有 div 和 data-ng-appdata-ng-view 属性:

mysite.come/virtualdir/App/App1:

<div class="row" data-ng-app="app-app1">
  <div data-ng-view></div>
</div>

mysite.come/virtualdir/App/App2

    <div class="row" data-ng-app="app-app2">
      <div data-ng-view></div>
    </div>

对于 angular,我知道如果我在 IIS 中有一个虚拟目录,我需要将其包含在 _Layout.cshtml 的 header 部分中(实际上将其放在 _Layout 中将中断开发):

<base href="@Url.Content("~/")" />

我原来的 templateUrl 和 angular 开发中的 app1 链接是:

  $routeProvider.when("/", {
    templateUrl: "/views/app1/index.html"
  }); 

  $routeProvider.when("/items", {
    controller: "receiveController",
    controllerAs: "vm",
    templateUrl: "/views/app1/receiveView.html"
  });

 // typical link in html page for app1
 <a data-ng-href="#/items"></a>

当我部署到 IIS 时,我需要有下面的路由才能在用户导航到 mysite.come/virtualdir/App/App1

时加载到我的索引页面
   $routeProvider.when("/", {
        templateUrl: "../views/app1/index.html"
      }); 

之后 none 我的其他链接有效:

<a data-ng-href="#/items"></a> navigates me to mysite.com/virtualDir/#/items

如何在 html 页面构建我的 hrefs?我尝试使用 ../#/items/..#/items 并将 .. 添加到另一个 templateUrl 但似乎没有任何效果。谢谢

所以看起来最简单的解决方案是如下定义路由和 href。我的问题是没有同时拥有这三种组合。我认为 angular 根据我定义的 ~/App/App1 定义了 angular 路由的根:

<div class="row" data-ng-app="app-app1">
  <div data-ng-view></div>
</div>

所以我需要 app.js:

 $routeProvider.when("/", {
        templateUrl: "views/app1/index.html"
      })

@我的顶_Layout.cshtml

<base href="/app/">

我的网址:

data-ng-href="App/App1#/items"