【问题标题】:Angular templateUrl not redirecting to MVC controllerAngular templateUrl 未重定向到 MVC 控制器
【发布时间】:2016-06-28 20:45:14
【问题描述】:

所以我在设置我的角度路线时遇到了问题。

直奔主题,我定义的角度路线不会影响我的 mvc 控制器,因此不会影响操作方法。

action 方法返回部分视图,代表我的模板。

这是我的路线配置图。

这是我的控制器操作的图像。

我确定我错过了什么,但似乎无法弄清楚是什么。

【问题讨论】:

  • 任何控制台错误?
  • @PankajParkar,好吧,我进一步查看了堆栈溢出问题,并在这里遇到了你们中的一个答案:stackoverflow.com/questions/28351124/…,您在其中建议不要使用 locationProvider,因为它会搞砸 MVC 路由并遵循你的建议。似乎删除 locationProvider 或将其设置为 false 可以解决问题。我仍在调查为什么会发生这种情况

标签: angularjs asp.net-mvc-4 routing


【解决方案1】:

这个例子可以帮助你更好地理解 $routeProvider 和 $locationProvider。

我看到的唯一问题是没有正确加载相关链接和模板。

from the docs regarding HTML5 mode

请务必检查所有相对链接、图像、脚本等。您必须在主 html 文件 () 的头部指定 url 基址,或者必须在任何地方使用绝对 url(以 / 开头),因为相对 url 将使用文档的初始绝对 url 解析为绝对 url,这通常与应用程序的根目录不同。 在您的情况下,您可以在 href 属性中添加正斜杠 / ($location.path 会自动执行此操作),也可以在配置路由时添加到 templateUrl。这样可以避免像 example.com/tags/another 这样的路由,并确保模板正确加载。

这是一个有效的例子:

<div>
    <a href="/">Home</a> | 
    <a href="/another">another</a> | 
    <a href="/tags/1">tags/1</a>
</div>
<div ng-view></div>

app.config(function($locationProvider, $routeProvider) {
  $locationProvider.html5Mode(true);
  $routeProvider
    .when('/', {
      templateUrl: '/partials/template1.html', 
      controller: 'ctrl1'
    })
    .when('/tags/:tagId', {
      templateUrl: '/partials/template2.html', 
      controller:  'ctrl2'
    })
    .when('/another', {
      templateUrl: '/partials/template1.html', 
      controller:  'ctrl1'
    })
    .otherwise({ redirectTo: '/' });
});

如果使用 Chrome,则需要从服务器运行。

【讨论】:

    【解决方案2】:

    对我有用的是删除 $locationProvider.html5Mode 的设置。正如有人在另一个堆栈溢出帖子中提到的那样,MVC5 and Angular.js routing - URLs not matching 在 MVC 中使用 locationProvider 似乎搞砸了路由。我仍在调查为什么会发生这种情况,因为我认为它所做的只是删除了 url 中的“#”,但似乎还有更多内容

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多