如何使用MVC4和WebAPI2配置routeProvider

时间:2014-08-25 15:06:18

标签: asp.net-mvc angularjs asp.net-mvc-4 routes asp.net-web-api2

我有一个小应用程序,显示包含一些事件的日历。

当我点击其中一个活动时,我想在日历下方显示选择的详细信息。

事件的网址是在这样的循环中生成的:

'url': '#/concerts/' + data[idx].id

我的配置如下:

var app = angular.module('EventsApp', ['ngRoute']);

app.config(['$routeProvider', '$locationProvider',
    function ($routeProvider, $locationProvider) {
        $routeProvider.
            when('/concerts/:eventId', {
                templateUrl: '/Views/Home/ng-view/details.html',
                controller: 'EventCtrl'
            }).
        otherwise({
            redirectTo: '/'
        });
    }]);

我的Index.cshtml:

<div id="bodyApp" ng-app="EventsApp">
    <div class="mainBody" ng-controller="EventCtrl as event" ng-init="event.getAllConcerts()">
        <div class="search">
            <input type="search" />
        </div>
        <div class="calendar">
             <div id="calendar">

            </div>
       </div>
       <div class="crudSection" ng-view>

    </div>
</div>

目前我只想让details.html显示,但它没有重定向。该网址已使用正确的网址进行更新,但我的视图未刷新。

此外,如果不暴露'/ api / {controller} / {id}'信息,routeProvider如何配置进行webapi调用?

编辑:我尝试使用标准MVC路线'/ Home / {action}和部分视图并且它有效,但不是'/ Home / {action} / {id}',所以我想我错过了关于如何结合两种路线的事情。

1 个答案:

答案 0 :(得分:0)

我在以下链接中找到了解决方案:

AngularJS - How to use $routeParams in generating the templateUrl?

app.config(['$routeProvider', '$locationProvider',
    function ($routeProvider, $locationProvider) {
        $routeProvider.
            when('/concerts/:eventId', {
                templateUrl: function (params) { return '/Home/Details/' + params.eventId; },
                controller: 'EventCtrl'
            }).
        otherwise({
            redirectTo: '/'
        });
    }]);