Подтвердить что ты не робот

Что такое замена для @Scripts.Render в MVC 6

Я пытаюсь запустить некоторые d3js на моем MVC 6 и смотрел на этот пример https://github.com/DustinEwers/D3-DotNetMVC-Demos/blob/master/D3Demos/Views/TagDemos/BasicBarChart.cshtml и использует

@Scripts.Render("~/bundles/d3")
@section Scripts{

Но если я это сделаю, я получаю

Имя "Сценарии" не существует в текущем контексте

Итак, есть ли новый способ сделать это в MVC 6?

4b9b3361

Ответ 1

В ASP.NET 5 нет такого метода Scripts.Render. Для рендеринга скриптов вы можете использовать помощник тега среды.

Нет необходимости использовать помощник тега среды. Вы можете напрямую поместить свои теги script в файл макета. Но помощники среды позволяют нам условно отображать сценарии на основе среды. (Версия с мини-соединением и версия Un Unified)

Вот синтаксис, вы можете включить его в свой файл макета.

<environment names="Development">
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/js/d3.js"></script>
</environment>
<environment names="Staging,Production">
    <script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"
            asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
            asp-fallback-test="window.jQuery">
    </script>            
    <script src="~/js/d3.min.js" asp-file-version="true"></script>
</environment>

Предполагая, что файлы script d3.js and d3.min.js существуют в каталоге ~/js.

Также вам нужно убедиться, что вы вызывали метод UseStaticFiles() внутри метода Configure() (внутри Startup.cs)

public void Configure(IApplicationBuilder app, IHostingEnvironment env,  
                                                             ILoggerFactory loggerFactory)
{
     //Other configuration goes here
     app.UseStaticFiles();  // This enables static file serving from the app.
     app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
}

UseStaticFiles() метод расширения позволяет использовать статические файлы, включая js файлы, css файлы и т.д.

Когда вы запустите приложение в режиме разработки, оно отобразит теги script внутри среды "Development", и когда вы запустите его в разделе "Проведение или производство", он будет отображать теги script в среде "Staging,Production".

Вы можете изменить значение среды, щелкнув правой кнопкой мыши на проекте и выберите properties->Debug и укажите значение переменной окружения Hosting:Environment

Вы можете видеть, что я включил мини-версию js файлов в среду Staging/Production. Это не обязательно, но предпочтительный подход, поскольку он сэкономит некоторую пропускную способность. (Вместо этого вы можете поместить неминифицированную версию, а не minified, если вы действительно этого хотите.). Если у вас есть один связанный файл, вы можете использовать его здесь и вместо отдельных файлов.

Если у вас уже нет мини-версии, вы можете сгенерировать ее, выполнив задачу gulp для минимизации. (Это включено в файл gulp.js по умолчанию, который находится в новом шаблоне веб-приложения). Вам просто нужно открыть диспетчер задач и запустить задачу минимизации.

введите описание изображения здесь

Если вы не хотите вручную запускать это каждый раз, вы можете выбрать Bindings -> Before build, чтобы он автоматически запускал эту задачу purticular gulp каждый раз при создании проекта.

Ответ 2

Теперь это немного сложнее, но документация объясняет это довольно хорошо:

Шаблон стартового веб-сайта ASP.NET MVC 5 использует встроенную поддержку ASP.NET для объединения. В ASP.NET MVC 6 эта функциональность лучше выполняется с помощью шагов сборки клиента...

Итак, чтобы связать скрипты вместе, вы можете использовать инструмент, например gulp-concat. И чтобы включить script, просто добавьте его так, как если бы это был статический контент:

<script src="~/lib/bundle.js"></script>

Для более полного примера включения контента ответ @Shyju превосходный.

Ответ 3

Если вы просто не запускаете этот script, просто создайте тег html script:

<script src="js/d3.js?version=1"></script>

Но я действительно рекомендую вам связывать и минимизировать ваши файлы активов. Вы можете связывать, минимизировать, перемещать (и многое другое) ваши файлы javascript/css с помощью диспетчеров, таких как Gulp и Grunt.

Информацию о том, как использовать gulp, можно найти здесь: http://rudiv.se/Article/asp-net-5-bundling-with-bower-and-gulp

И затем с помощью Shyju post загрузите правильные файлы при запуске среды разработки или промежуточного уровня.