Angular templateUrl不重定向到MVC控制器

时间:2016-06-28 20:45:15

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

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

直截了当地说,我的角度路线定义不会击中我的mvc控制器,从而击中动作方法。

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

以下是我的路线配置图片。

enter image description here

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

enter image description here

我确信我错过了一些东西,但似乎无法弄清楚是什么。

2 个答案:

答案 0 :(得分:0)

此示例可帮助您更好地了解$ routeProvider和$ locationProvider。

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

from the docs regarding HTML5 mode

请务必检查所有相关链接,图像,脚本等。您必须在主html文件()的头部指定url base,或者必须使用绝对URL(以/开头),因为相对URL将是使用文档的初始绝对URL解析为绝对URL,这通常与应用程序的根不同。 在您的情况下,您可以在配置路由时添加正斜杠/ in 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,则需要从服务器运行。

答案 1 :(得分:0)

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