我们正在创建一个使用AngularJS ui.router进行客户端路由的单页ASP.NET MVC应用程序。如何在ASP.NET MVC中使用ui.router处理AngularJS中的页面刷新
当前,后退/前进按钮按预期工作,但当用户单击浏览器的刷新按钮时,部分视图将在没有布局页面的情况下加载。
例如:
- 用户导航到“http://localhost/MyApp/”,MVC返回布局页面,然后我们定位到默认状态。
- 用户点击页面上的链接,导航到通过客户端路由特定的状态,网址现在是在浏览器的刷新按钮“http://localhost/MyApp/UserManagement/EditUser”
- 用户点击,它加载了“UserManagement/EditUser”局部视图,而不布局
我们还需要做什么才能在用户单击浏览器的刷新按钮时重新加载布局?
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
var baseFrameworkApp = angular.module("BaseFrameworkApp", ['ui.router'])
.config(['$stateProvider', '$httpProvider', '$locationProvider', '$urlRouterProvider',
function ($stateProvider, $httpProvider, $locationProvider, $urlRouterProvider) {
$locationProvider.hashPrefix("!").html5Mode(true);
$urlRouterProvider.otherwise("/");
$stateProvider
.state('Default', {
url: '/{controller}/{action}',
views: {
"mainContainer": {
templateUrl: function (params) { return params.controller + '/' + params.action; }
}
}
});
}]);
你能分享你的布局页面代码吗?我假设你有一个' '标签。此外,您必须在RouteConfig中提供一个全面的网址。所有没有'#'的url请求都发送到服务器,因此服务器应该将所有url映射到单个布局呈现操作 –
v1p