Контроллер получил 2 запроса на каждый запрос страницы - PullRequest
0 голосов
/ 28 апреля 2019

Я изменил Маршрут карты в моем приложении Dot Net Core, которое для каждого запроса направляется на один контроллер, поэтому для каждой создаваемой страницы не требуется большого количества контроллера или результата действия.

жадная маршрутизация

routes.MapRoute("", "/{*article}",
defaults: new { controller = "Pages", action = "Killme" });

В Page Controller при создании объекта, имеющего список местоположений CSS и JavaScript, этот объект передается в представление страницы

public IActionResult Killme()
{   
 var PageInfo = GetPage_Data();
 ViewBag.PageInfo = t;
 return View("Pages");
}

и я попытался передать эту информацию как модель или сумку для просмотра страницы. в представлении страницы я пытаюсь построить JavaScript и CSS динамически на основе модели, подобной

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    @{
    RootObject PageInfo = ViewBag.PageInfo;
    foreach (var JavaScript in PageInfo.js)
    {
        var JSsrc = JavaScript.src;
      <script type="text/javascript" src="@JSsrc "> 
                 </script>        

    }
        <script type="text/javascript" src=""></script>
    </head>
    <body>

    </body>
</html>

Теперь проблема в том, что когда я создаю JavaScript, контроллер вызывается 2 раза, а страница отображается 2 раза, когда я комментирую

 <script type="text/javascript" src="@JSsrc "> 
                     </script> 

контроллер страницы будет вызван один раз, любая помощь относительно того, почему это происходит и что я делаю не так, будет признательна

1 Ответ

1 голос
/ 28 апреля 2019

Причиной такого поведения является то, что staticFileHandler либо не настроен, либо не может найти ваш файл Javascript и передает запрос дальше по конвейеру. Обработчик MVC перехватывает все запросы (из-за вашего маршрута) и поэтому снова возвращает ту же страницу.

Сначала проверьте, что ваш класс запуска использует staticFileHandler перед mvcHandler, так что-то вроде этого:

public class Startup
{
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles();
        ..
        app.UseMvc();
    }
}

Во-вторых, убедитесь, что ваш Javascript находится внутри wwwroot и использует правильный путь. Так что файл типа wwwroot / js / mysite.js должен иметь такой скрипт-тег:

<script src="/js/mysite.js"></script>

Эти улучшения должны решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...