2016-06-30 3 views
2

Я строю MVC 5, приложение уведомления о действительном времени SignalR, я хочу разместить мои рабочие скрипты в _Layout.cshtml, потому что, например, при добавлении нового элемента я хочу отображать toastr но скрипты поместили его в _Layout.cshtml, я не добавил скрипты в BundleConfig, но он не работает. Примечание: все работает нормально на каждой странице, кроме _Layout.cshtml Может ли кто-нибудь мне помочь? Большое спасибо. Вот мой код:Включить пользовательские скрипты в _Layout.cshtml ASP.NET MVC 5

$(document).ready(function() { 
toastr.options = { 
    "closeButton": true, 
    "debug": false, 
    "newestOnTop": false, 
    "progressBar": true, 
    "positionClass": "toast-top-right", 
    "preventDuplicates": false, 
    "showDuration": "300", 
    "hideDuration": "1000", 
    "timeOut": "5000", 
    "extendedTimeOut": "1000", 
    "showEasing": "swing", 
    "hideEasing": "linear", 
    "showMethod": "fadeIn", 
    "hideMethod": "fadeOut" 
}; 
$(function() { 

    var notificationhub = $.connection.notificationHub; 

    notificationhub.client.displayMessage = function (message) { 

     toastr.success(message); 
     //$('#notification').html(message); 
    }; 

    $.connection.hub.start(); 

}); }); 

Этот скрипт работает, если я место его на любой странице @section scripts{} Мои _layout сценарии раздела выглядит следующим образом:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/bootstrap") 
@Scripts.Render("~/bundles/notifications") 
@RenderSection("scripts", required: false) 

Но это не способ работы. Как я могу реализовать свой скрипт правильно на моей странице _Layout, чтобы отображать уведомления каждый.

ответ

3

На вашей странице _Layout.cshtml часть @RenderSection("scripts", required: false) служит только как заполнитель для страниц, реализующих @sections scripts {}, поэтому вы видите поведение, которое вы являетесь. Это часть механизма компоновки для Razor.

Для получения дополнительной информации о том, что все работает, вот статья на блоге ScottGu, что может помочь: ASP.NET MVC 3: Layouts and Sections with Razor

Для того, чтобы получить пакет сценариев, которые будут включены в базовую страницу _layout, вы должны непосредственно оказывать это на странице, как и другие пакеты. Это должно выглядеть примерно так:

@Scripts.Render("~/bundles/scripts") 

** Где scripts это имя сценария расслоения вы хотите включить.

Теперь, если вы хотите просто поставить скрипт прямо на страницу, вы также можете это сделать. Просто убедитесь, что вы вложили его правильно с правильным синтаксисом HTML. И помните, что любая страница, использующая _Layout.cshtml в качестве макета, будет иметь все скрипты, включенные в _Layout.cshtml.

+0

Лот благодарения ryancdotnet. –

0

Большое спасибо ryancdotnet, ASP.NET MVC 3: Layouts and Sections with Razor Было очень полезно, поэтому я буду в качестве решения размещать свои сценарии на каждой странице, где я хочу использовать скрипт.

Смежные вопросы