简体   繁体   English

ASP.NET MVC应用程序中的角路由

[英]Angular routing in ASP.NET MVC application

I'm trying to read query parameters in my angular controller so I set up the route config confirmedemailcontroller.js 我试图在我的角度控制器中读取查询参数,所以我设置了确认的路由配置emailcontroller.js

var app = angular.module('confirmedemail', ['ngRoute']);
app.config(function ($routeProvider, $locationProvider) {
    // calls
    $routeProvider.when('/confirmedemail/:userid/:token', {
        templateUrl: 'templates/confirmedview.html',
                    controller: 'ConfirmedEmailController'
                });
    $locationProvider.html5Mode(true);
});

app.controller('ConfirmedEmailController', function ($scope, $http, $routeParams, $location) {
    // never calls
    // read params from $routeParams and send them then display the result...
    //...
});

ConfirmedEmail.cshtml ConfirmedEmail.cshtml

@{
    ViewBag.Title = "Confirm Email";
}

    <h2>@ViewBag.Title.</h2>
    <div data-ng-app="confirmedemail">
        <p>
            Thank you for confirming your email. Please @Html.ActionLink("Click here to Log in", "Login", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })
        </p>
        <div ng-view></div>
    </div>

my root is http://localhost:25715/confirmedemail/111/222 , where 111 is userId and 222 is token which I want to read out inside controller 我的根目录是http:// localhost:25715 / confirmedemail / 111/222 ,其中111userId,222是我想在控制器内部读取的令牌

But controller never calls. 但是控制器永远不会调用。 What have I missed? 我错过了什么?

Updated I have HomeController with working action 更新了我的HomeController有工作措施

public ActionResult ConfirmedEmail(string userId = "", string code = "")
{
    ViewBag.Message = "Account confirmed";
    return View();
}

and in templates folder there's confirmedview.html 在模板文件夹中,有confirmedview.html

In RouteConfig.cs 在RouteConfig.cs中

  routes.MapRoute(
         name: "Confirm",
         url: "ConfirmedEmail/{userId}/{code}",
         defaults: new { controller = "Home", action = "ConfirmedEmail", userId = "", code = "" }
     );

in confirmedemailcontroller.js 在确认的emailcontroller.js中

var app = angular.module('confirmedemail', ['ngRoute']);
app.config(function ($routeProvider, $locationProvider) {
    $routeProvider.when('/ConfirmedEmail/:param1/:param2', {
        templateUrl: '/templates/confirmedview.html',
                    controller: 'ConfirmedEmailController'
                });
    $locationProvider.html5Mode({ requireBase: false, enabled: true });
});
app.controller('ConfirmedEmailController', function ($scope, $http, $routeParams) { ... });

And don't forget about case sensivity! 并且不要忘记区分大小写! If I call it like mysite.com/confirmedemail/111/222 , it won't work 如果我像mysite.com/confirmedemail/111/222这样称呼它,它将无法正常工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM