Как использовать data-ng-view в _layout.cshtml

Я пытаюсь создать приложение MVC с помощью Angular. Мое приложение имеет общий верхний и нижний колонтитулы. Поэтому я добавил его в _layout.cshtml. В приложении есть несколько статических страниц. Следовательно, я хочу загрузить это с помощью маршрутизации Angular.

Вот мой _layout.cshtml

<!DOCTYPE html>
<html data-ng-app="HappyHut">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header page-scroll">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse #bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Happy Hut", "Main", "Home", new { area = "" }, new { @class = "navbar-brand page-scroll" })
            </div>
            <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="/ContactUs">Contact Us</a></li>
                    <li><a href="/AboutUs">About Us</a></li>
                    <li><a href="/login">Login</a></li>
                    <li><a href="/register">Register</a></li>
                    <li><a href="/Test">Test</a></li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container body-content" data-ng-view>
        @RenderBody()
        <hr />
        <footer>
footer data
        </footer>
    </div>

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
    @Scripts.Render("~/bundles/Angular")
</body>
</html>

В целях тестирования я вставил некоторые тестовые данные html в main.cshtml.

и вот мой файл js.

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

HappyHut.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $locationProvider.hashPrefix('!').html5Mode({
        enabled: true,
        requireBase: false
    });

    $routeProvider
    .when('/ContactUs', {
        templateUrl: 'Home/Contact'
    })
    .when('/AboutUs', {
        templateUrl: 'Home/About'
    })
    .when('/Test', {
        templateUrl: 'Home/Test'
    });
}]);

Здесь test.cshtml похож на

@{
        //Layout = null;
    }
    Hi Test

Когда я загружаю Main.cshtml, страница загружается, но часть тела скрывается. Если я нажму Test, он загрузится. Однако, если я добавлю Layout = null, произойдет то же самое, что и в Main.cshtml, и откроется всплывающее окно с надписью

страница не запускается из-за долго работающего скрипта

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

пытался загрузить angular более одного раза

. Теперь я не хочу копировать верхний и нижний колонтитулы на всех страницах.

Может ли кто-нибудь сказать мне, как сделать так, чтобы содержимое главной страницы отображалось или все страницы, которые будут созданы с использованием _layout.cshtml?


person Pratik Gaikwad    schedule 16.11.2014    source источник
comment
Принятый подход состоял из шаблонов. Используя службу $http, строка html была получена с сервера и сохранена в переменной cookie.   -  person Pratik Gaikwad    schedule 20.04.2017


Ответы (1)


измените ng-view на ui-view и используйте ui.router вместо ngroute,

альтернативное решение доступно здесь AngularJS Ui-Router с ASP.Net MVC RouteConfig. Как это работает?

person Dinuka    schedule 18.11.2017