Маршрут к другому представлению (используйте @Html.ActionLink и ng-view в представлении) в Asp.Net MVC с AngularJS, ng-view работает только один раз, странный URL-адрес местоположения

В моем случае мне нужно использовать @Html.ActionLink для маршрутизации к другому представлению с помощью AngularJS. В каждом представлении1/index.cshtml в asp.net есть <div ng-view></div>, который будет загружать свой HTML-шаблон.

следующее изображение ссылки — это структура моего проекта:
нажмите

Моя проблема: это только первый успех маршрута. Я думаю, что это вызывает неправильный URL-адрес местоположения.

Просмотры/Общий доступ/_Layout.cshtml:

<ul>
    <li>@Html.ActionLink("Home", "Index", "Home")</li>
    <li>@Html.ActionLink("Device Management", "Index", "DeviceManagement")</li>
</ul>

Представления/Главная/index.cshtml:

@{
    ViewBag.Title = "Home Page";
    ViewBag.InitModule = "homeIndex";
}
@section Scripts {
    <script src="~/app/home/homeIndex.js"></script>
}
<div ng-view><div>

приложение/home/homeIndex.js

var homeIndex = angular.module('homeIndex', ["ngRoute"]);

homeIndex.config(["$routeProvider", function($routeProvider){
    $routeProvider
        .when("/home",{
            templateUrl:"app/home/homeIndex.html",
            controller:"homeCtrl"

        })

        .otherwise({
            redirectTo:"/home"
        });
}]);

приложение/home/homeIndex.html

<a href="#/home2">HOME2</a>

app/deviceManagement/deviceManageIndex.js

var deviceManageIndex = angular.module('deviceManageIndex', ["ngRoute"]);

deviceManageIndex.config(["$routeProvider", function($routeProvider) {
    $routeProvider
        .when("/device", {
            templateUrl: "app/deviceManagement/deviceManagementIndex.html",
            controller: "deviceManageCtrl"

        })
        .otherwise({
            redirectTo:"/device"
        });

}]);


на веб-сайте есть боковая панель, кнопки Главная и Управление устройством на боковой панели.

когда я нажимаю Home, он перенаправляет правильное местоположение, он может успешно загрузить homeIndex.html:

расположение:

http://localhost:13060/#/home

но когда я нажимаю кнопку Home второй раз, он больше не может загрузить homeIndex.html.

местоположение изменится на:

http://localhost:13060/#

такая же проблема возникла в другой кнопке Управление устройством

когда я нажимаю Управление устройствами, он перенаправляет правильное местоположение, он может успешно загрузить deviceManagementIndex.html:

расположение:

http://localhost:13060/DeviceManagement#/device

но когда я нажимаю кнопку Управление устройствами второй раз, он больше не может загружать deviceManagementIndex.html.

местоположение изменится на:

http://localhost:13060/DeviceManagement#

Я думаю, что место довольно странное, в первый раз оно должно быть:

http://localhost:13060/DeviceManagement/#/device

Я думаю, это основная причина неправильной загрузки html-шаблона...

Но почему URL-адрес местоположения не может отображаться правильно, пожалуйста, помогите мне решить проблему с головной болью....


person Seven Lee    schedule 16.03.2015    source источник
comment
Кто может спасти меня,,,Помогите :'0   -  person Seven Lee    schedule 17.03.2015
comment
Маршрутизация осуществляется только на стороне клиента, она не будет перенаправлять на необработанный URL-адрес. Возможно, я неправильно понял это, но я думаю, вам нужно будет обработать его как обратный вызов, а затем использовать $window.location, чтобы установить его вручную.   -  person Shawn Wildermuth    schedule 18.03.2015


Ответы (1)


Благодаря совету Шона! В моем случае я должен использовать угловую маршрутизацию на стороне клиента, $routeProvider с templateUrl для запуска контроллера на стороне сервера для загрузки представления на стороне сервера. правило маршрута на стороне сервера, чтобы выбрать соответствующий вид. Должно получиться... :D

person Seven Lee    schedule 19.03.2015