MVC和angularJs路由冲突

时间:2015-12-11 12:36:41

标签: angularjs asp.net-mvc asp.net-mvc-4

在我的MVC应用程序中,我有一个家庭控制器和一个索引方法。我已将索引方法设置为RouteConfig文件中的默认路由。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我在我的应用程序中使用Angular JS。我已经使用$ http。

定义了一个服务并在家庭控制器中调用了一个动作“Clusters”
app.service('homeService', function ($http) {

    this.getClusters = function () {
        var promise = $http.get("Clusters");
        return promise;
    };
});

当我运行项目并转到默认网址[http://localhost:56698/],然后http://localhost:56698/Clusters 404未找到异常时发生。但如果网址为http://localhost:56698/Home/Index,则有效。所以我的Angular js服务不能在默认URL中工作。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为您的javascript参考存在问题。 你应该使用这样的相对引用:

<script src="@Url.Content("~/Scripts/angular.js")" type="text/javascript"></script>

或者您应该更改您的群集调用:(我假设您的javascript代码位于您的视图中)

 this.getClusters = function () {
    var promise = $http.get('@Url.action(Clusters,Your controller name)');
    return promise;
};