Angularjs页面刷新仅在应用程序中的一个页面中打破

时间:2018-02-12 22:38:08

标签: javascript angularjs

我收到了Agularjs刷新返回404错误,这个错误在过去几年中得到了很好的记录,但我在我的应用程序的一个页面上遇到了这个问题。除了我的用户信息页面,我有几个页面都会在刷新时解析到他们的页面。这是我的路由代码。我已经为我的仪表板页面(也可以)提供了路线。

$locationProvider.html5Mode(true);

    $stateProvider.
        state("home", {
            url: "/dashboard",
            controller: "dashboardController as vm",
            templateUrl: 'app/dashboard/view.html',
            resolve: {
                user: ['oauth',
                    function (oauth) {
                        return oauth.getOrLoadUser();
                    }]
            }
        }).
        state("updateInfo", {
            url: "/updateInfo",
            controller: "updateInfoController as vm",
            templateUrl: 'app/account/updateInfo.html',
            resolve: {
                user: ['oauth',
                    function (oauth) {
                        return oauth.getOrLoadUser();
                    }]
            }
        }).

正如您所看到的,我正在为我的locationProvider设置Html5Mode,并且该路线与我的其他路线相同。 任何帮助将不胜感激。

更新 这是我的routeConfig的样子。

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

        Dictionary<string, string> handleInHome = new Dictionary<string, string>();
        handleInHome.Add("login", "login/{*catchall}");
        handleInHome.Add("dashboard", "dashboard/{*catchall}");            
        handleInHome.Add("aboutus", "aboutus/{*catchall}");
        handleInHome.Add("requests", "requests/{*catchall}");
        handleInHome.Add("faq", "faq/{*catchall}");      

        foreach (var key in handleInHome.Keys)
        {
            routes.MapRoute(
               name: key,
               url: handleInHome[key],
               defaults: new { controller = "Home", action = "Index" }
           );
        }           


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

我尝试为accounts文件夹添加一个catch all,但我没有任何区别。 handleInHome.Add(“account”,“account / {* catchall}”);

1 个答案:

答案 0 :(得分:1)

您需要在后端处理/updateInfo路线,以确保为此路线投放Angular应用。

handleInHome.Add("updateInfo", "updateInfo/{*catchall}");