具有MVC6角度路由的IIS虚拟目录1.4.5

时间:2016-01-12 15:41:13

标签: angularjs iis asp.net-core-mvc angular-routing

我有一个MVC6 / Angular站点,它有多个应用程序,但现在只有一个。完成后,示例将为App1App2.cshtml个网页,其中只包含data-ng-appdata-ng-view属性的div:

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的标题部分中包含(实际上把它放在_Layout中会破坏开发):

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

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

  $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"
      }); 

之后,我的其他链接都没有工作:

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

如何在html页面中构建我的href?我尝试使用../#/items/..#/items并将..添加到其他templateUrl,但似乎没有任何效果。感谢

1 个答案:

答案 0 :(得分:0)

所以似乎最简单的解决方案是定义路由和href,如下所示。我的问题是没有同时拥有所有这三种组合。我认为angular定义了基于我定义的〜/ App / App1的角度路径的根:

<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/">

my href:

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