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

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

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

Моя проблема заключается в том, что это только успешный маршрут с первого раза.

Просмотров / Share / _Layout.cshtml:

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

Views / Home / index.cshtml:

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

приложение / дома /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"
        });
}]);

приложение / дома /homeIndex.html

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

Приложение /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

но когда я нажимаю кнопку " Домой" во второй раз, он больше не может загрузить 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-адрес местоположения не может отображаться правильно, пожалуйста, помогите мне решить проблему головной боли....

1 ответ

Решение

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

Другие вопросы по тегам