Angular和asp mvc控制器上的路由不起作用

时间:2015-02-26 22:04:07

标签: asp.net-mvc angularjs

我关注模块和路线配置:

var app = angular.module("ApplicationMainModule", ["ngRoute"]);

app.config([
    "$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
        $routeProvider.when("/showStudents",
        {
            templateUrl: "main/showStudents"
        });            
        $routeProvider.otherwise(
        {
            redirectTo: "/"
        });

        $locationProvider.html5Mode(true).hashPrefix("!");
    }
]);

我的控制器就是这个:

public class MainController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult ShowStudents()
        {
            return View();
        }    
    }

但是重定向不起作用......出现这个:

Error

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

角度路线是"#"之后的部分。在URL中(例如/ main#/ showStudents),所以当你请求/ showStudents时,你仍然在路由的MVC端,并且它正在寻找一个名为ShowStudentsController的控制器。

如果您希望默认路由将您发送到Main / ShowStudents,则需要更改MVC端的路由。您可能有类似以下的路线设置:

routes.MapRoute(
    "Default",
    "{controller}/{action}",
    new { controller = "Home", action = "Index" }
);

只需将默认控制器和操作更改为MainShowStudents

答案 1 :(得分:0)

使用$locationProvider时,您需要在标记的某处设置base标记,如下所示:<base href="/">
或者您也可以尝试localhost:PORT/#!/showStudents,它应该可以使用。