页面刷新问题

时间:2015-09-11 12:40:56

标签: angularjs asp.net-mvc

嗨我有页面刷新的问题,每当我在浏览器上按下刷新按钮时,我在页面上的不同,那么索引我得到“服务器错误在'/'应用程序。” 404错误页面。

后退按钮正常工作,但不能刷新。

当我使用http://localhost:2902/#/Dashboard?id=1时 它的工作原理

当我使用http://localhost:2902/Dashboard?id=1时 它没有

我该如何解决?

var dashboardRoutes = function ($stateProvider, $locationProvider) {

$locationProvider.hashPrefix('!').html5Mode({
                                            enabled: true,
                                            requireBase: false
});

$stateProvider
    .state('stateIndex', {
        url: '/',
        views: {
            "mainView": {
                templateUrl: '/Dashboards/List',
                controller: 'dashListController'
            }
        }
    })
    .state('stateList', {
        url: '/List',
        views: {
            "mainView": {
                templateUrl: '/Dashboards/List',
                controller: 'dashListController'
            }
        }
    })
    .state('stateDashboard', {
        url: '/Dashboard?id',
        views: {
            "mainView": {
                templateUrl: function (params) { return '/Dashboards/Dashboard?id=' + params.id; },
                controller: 'dashboardController'
            }
        }
    })
    .state('stateWidgetsList', {
        url: '/WidgetsList',
        views: {
            "mainView": {
                templateUrl: '/Dashboards/WidgetsList',
                controller: 'widgetsListController'
            }
        }
    });
}
dashboardRoutes.$inject = ['$stateProvider', '$locationProvider'];  

RouteConfig:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Index",
            url: "",
            defaults: new { controller = "Dashboards", action = "Index" }
        );

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

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

2 个答案:

答案 0 :(得分:0)

它只是您的服务器设置,与AngularJS无关。

您应该设置服务器以生成此网址" http://localhost:2902/Dashboard?id=1"还会导致 index.html ,但不会导致Dashboard目录。

答案 1 :(得分:0)

这是因为您已启用html5mode,删除了您需要启用的html5mode,您已正确完成此操作,但您还需要在服务器上实施URL重写以使其成为可能工作正常,否则刷新服务器后将无法找到html文件。