우리는 클라이언트 쪽 라우팅을 위해 AngularJS ui.router를 사용하는 단일 페이지 ASP.NET MVC 응용 프로그램을 만듭니다.ASP.NET MVC에서 ui.router를 사용하여 AngularJS에서 페이지 새로 고침을 처리하는 방법
현재 뒤로/앞으로 단추는 예상대로 작동하지만 사용자가 브라우저의 새로 고침 단추를 클릭하면 부분 페이지가 레이아웃 페이지없이로드됩니다. 예를 들어
:
- 사용자가 탐색은 "http://localhost/MyApp/는"MVC는 레이아웃 페이지를 반환하고 우리는 기본 상태로 이동합니다.
- 사용자가 페이지의 링크를 클릭 및 클라이언트 측 라우팅을 통해 특정 상태를 탐색하는 url은 브라우저의 새로 고침 버튼의 "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 요청은 서버로 보내 지므로 서버는 모든 URL을 단일 레이아웃 렌더링 액션으로 매핑해야합니다. –
v1p