2014-10-14 5 views
0

Я использую angularjs внутри моего ASP.NET MVC проекта и имеют на следующие ссылки в представлении asp.net:angularjs и asp.net MVC маршрутизации вопрос

<a href="/Organization/Employee/@user.Alias#info">@user.Alias.ToUpper()</a> 

, что дает мне ссылку, как это для пример:

http://localhost:53315/Organization/Employee/15#/info 

Что я хочу быть hanled на MVC контроллер, а затем использовать angularjs маршрутизации, чтобы показать шаблон внутри возвращаемой зрения asp.net.

Вот мой asp.net MVC контроллер:

 public ActionResult Employee(String id) 
     { 
      ... 
      return View(); 
     } 

routeConfig:

context.MapRoute(
     "Organization_Employee", 
     "Organization/Employee/{id}/{*mod}", 
     new { controller = "User", action = "Employee" } 
    ); 

и angularjs материал:

$routeProvider 
     .when('/info', { 
     controller: 'UserCtrl', 
     templateUrl: baseTemplateUrl + 'info.html' 
    }) 

    .controller('UserCtrl', ['$scope', '$location', '$routeParams', 'User', function ($scope, $location, $routeParams, User) { 
     $scope.user = User.get({ id: $routeParams.id }); 

Как я могу получить, что id ('15') параметр из url в угловом контроллере?

+0

Почему вы используете маршрутизацию mvc бок о бок с угловыми? Я бы предпочел один вариант (маршрутизация углов или mvc). –

ответ

2

В вашем случае вы можете получить идентификатор от синтаксического анализа окна URL $window.location.href или $ location.absUrl()

.controller('UserCtrl', ['$window', '$location', '$routeParams', 'User', function ($window, $location, $routeParams, User) { 
    var splitUrl=$window.location.href.split("#")[0].split("/"); 
    //or 
    //var splitUrl=$location.absUrl().split("#")[0].split("/"); 
    var userId=splitUrl[splitUrl.length]; // some like that 
    $scope.user = User.get({ id: userId }); 

Если ваш URL выглядит http://localhost:53315/Organization/Employee/#/info/15 или http://localhost:53315/Organization/Employee/15#/info/15

. Вы можете получить идентификатор, так:

$routeProvider 
    .when('/info/:id', { 
    controller: 'UserCtrl', 
    templateUrl: baseTemplateUrl + 'info.html' 
}) 

.controller('UserCtrl', ['$scope', '$location', '$routeParams', 'User', function ($scope, $location, $routeParams, User) { 
    $scope.user = User.get({ id: $routeParams.id }); 

Это потому, что $ места работы с путем после того, как hashbang в не режиме HTML5.

Смежные вопросы