[英]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/15
或http://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.