簡體   English   中英

angularjs和asp.net MVC路由問題

[英]angularjs and asp.net mvc routing issue

我在asp.net mvc項目中使用angularjs,並在asp.net視圖中具有以下鏈接:

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

這給了我這樣的鏈接,例如:

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

我想被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')參數?

在您的情況下,您可以通過解析窗口網址$ window.location.href或$ location.absUrl()來獲取ID

.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 });

如果您的網址看起來像http://localhost:53315/Organization/Employee/#/info/15http://localhost:53315/Organization/Employee/15#/info/15

您可以通過以下方式獲取ID:

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

這是因為$ location在非HTML5模式下與hashbang之后的路徑一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM