0

У меня возникли некоторые странные проблемы, когда я пытаюсь опубликовать свое веб-приложение ASP.net MVC на своих тестовых серверах IIS. Я решил, что это может иметь какое-то отношение к комплектации. В моем приложении я использую jquery datatable для отображения данных в реальном времени из db для пользователя. Когда я запускаю приложение через отладчик vs2013, приложение выглядит и работает хорошо. Однако, когда я публикую IIS тестового сервера, стиль datatable, похоже, исчезает (функциональность таблицы все еще работает).Проблемы со стилем JQuery Datatable при публикации (возможно, проблема с пакетом)

Я добавил:

BundleTable.EnableOptimizations = true; 

и изменил web.config, как так

<compilation debug="false" targetFramework="4.5" /> 

Вот мой конфиг пакетирования:

public static void RegisterBundles(BundleCollection bundles) 
    { 
     BundleTable.EnableOptimizations = true; 

     bundles.Add(new ScriptBundle("~/bundles/CustomJqueryBundle").Include(
        "~/Scripts/jquery-{version}.js", 
        "~/Scripts/jquery-ui-{version}.js", 
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate")); 

     bundles.Add(new ScriptBundle("~/bundles/CustomJqueryDataTable_Scripts").Include(
        "~/Content/DataTables-1.10.5/DataTables-1.10.5/media/js/jquery.dataTables.js", 
        "~/Content/DataTables-1.10.5/DataTables-1.10.5/extensions/Responsive/js/dataTables.responsive.js")); 

     bundles.Add(new ScriptBundle("~/bundles/CustomJqueryDataTable_Styles").Include(
        "~/Content/DataTables-1.10.5/DataTables-1.10.5/media/css/jquery.dataTables.css", 
        "~/Content/DataTables-1.10.5/DataTables-1.10.5/extensions/Responsive/css/dataTables.responsive.css")); 

     bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.validate*")); 

     // Use the development version of Modernizr to develop with and learn from. Then, when you're 
     // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. 
     bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
        "~/Scripts/modernizr-*")); 

     bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
        "~/Scripts/bootstrap.js", 
        "~/Scripts/respond.js")); 

     bundles.Add(new StyleBundle("~/Content/css").Include(
        "~/Content/bootstrap.css", 
        "~/Content/site.css")); 
    } 

и здесь, где я Отрендерьте datatable-скрипты в _layout

@Scripts.Render("~/bundles/CustomJqueryBundle", "~/bundles/bootstrap", "~/bundles/CustomJqueryDataTable_Scripts") 
@Styles.Render("~/bundles/CustomJqueryDataTable_Styles") 
@RenderSection("scripts", required: false) 

Его также стоит отметить, что стили по умолчанию MVC до сих пор, кажется, работают правильно

через отладчик (с BundleTable.EnableOptimizations = истина закомментирована) enter image description here

Когда опубликованы (или через отладчик с BundleTable. EnableOptimizations = true NOT commented out) enter image description here

Я также просто попытался сделать следующее вместо использования скриптов.render и приложение опубликовано со стилями, pr внимание переходит, что это вопрос комплектации:

<script src="~/Scripts/jquery-1.10.2.js"></script> 
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script> 
<script src="~/Scripts/bootstrap.js"></script> 
<script src="~/Scripts/respond.js"></script> 
<script src="~/Content/DataTables-1.10.5/DataTables-1.10.5/media/js/jquery.dataTables.js"></script> 
<link href="~/Content/DataTables-1.10.5/DataTables-1.10.5/media/css/jquery.dataTables.css" rel="stylesheet" /> 
<link href="~/Content/DataTables-1.10.5/DataTables-1.10.5/extensions/Responsive/css/dataTables.responsive.css" rel="stylesheet" /> 
<script src="~/Content/DataTables-1.10.5/DataTables-1.10.5/extensions/Responsive/js/dataTables.responsive.js"></script> 


@RenderSection("scripts", required: false) 

ответ

2

Вы комплект вашего CSS, как JS скрипты (ScriptBundle), а не CSS (StyleBundle) - вам нужно:

bundles.Add(new StyleBundle("~/bundles/CustomJqueryDataTable_Styles").Include(
       "~/Content/DataTables-1.10.5/DataTables-1.10.5/media/css/jquery.dataTables.css", 
       "~/Content/DataTables-1.10.5/DataTables-1.10.5/extensions/Responsive/css/dataTables.responsive.css")); 

Так это будет следует рассматривать как CSS, а не сценарий JS во время процесса оптимизации.

+0

О, черт возьми, я смущен, но большое вам спасибо за то, что поймал это. Я начинал сходить с ума. – Validbit