diff --git a/core/modules/views/config/schema/views.display.schema.yml b/core/modules/views/config/schema/views.display.schema.yml
index 3e696143f1..bb5ba8ae82 100644
--- a/core/modules/views/config/schema/views.display.schema.yml
+++ b/core/modules/views/config/schema/views.display.schema.yml
@@ -68,6 +68,9 @@ views.display.page:
         menu_name:
           type: string
           label: 'Menu name'
+    admin_theme:
+      type: boolean
+      label: 'Use admin theme'
 
 views.display.block:
   type: views_display
diff --git a/core/modules/views/src/Plugin/views/display/Page.php b/core/modules/views/src/Plugin/views/display/Page.php
index baf1434449..b2ec8f25cd 100644
--- a/core/modules/views/src/Plugin/views/display/Page.php
+++ b/core/modules/views/src/Plugin/views/display/Page.php
@@ -93,6 +93,13 @@ protected function getRoute($view_id, $display_id) {
     // Explicitly set HTML as the format for Page displays.
     $route->setRequirement('_format', 'html');
 
+    // Add the _admin_route option only if 'admin_theme' display option is TRUE.
+    // Otherwise, let other modules or alters to make a decision.
+    // @see \Drupal\system\EventSubscriber\AdminRouteSubscriber::alterRoutes()
+    if ($this->getOption('admin_theme')) {
+      $route->setOption('_admin_route', TRUE);
+    }
+
     return $route;
   }
 
@@ -151,6 +158,7 @@ protected function defineOptions() {
         'weight' => ['default' => 0],
       ],
     ];
+    $options['admin_theme'] = ['default' => FALSE];
 
     return $options;
   }
@@ -230,6 +238,10 @@ public function optionsSummary(&$categories, &$options) {
       $options['menu']['setting'] = $this->t('Parent menu item');
       $options['menu']['links']['tab_options'] = $this->t('Change settings for the parent menu');
     }
+
+    if ($this->getOption('admin_theme')) {
+      $options['path']['value'] .= ' ' . $this->t('(using admin theme)');
+    }
   }
 
   /**
@@ -442,6 +454,14 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           ],
         ];
         break;
+      case 'path':
+        $form['admin_theme'] = [
+          '#type' => 'checkbox',
+          '#title' => $this->t('Enforce this page to be displayed in the admin theme'),
+          '#description' => $this->t('Paths starting with /admin/ are always shown in the admin theme. If checked, pages on other paths are shown in the admin theme as well.'),
+          '#default_value' => $this->getOption('admin_theme'),
+        ];
+        break;
     }
   }
 
@@ -491,6 +511,9 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
       case 'tab_options':
         $this->setOption('tab_options', $form_state->getValue('tab_options'));
         break;
+      case 'path':
+        $this->setOption('admin_theme', $form_state->getValue('admin_theme'));
+        break;
     }
   }
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php
index 501d9226ee..bc4c30aa7b 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php
@@ -148,6 +148,30 @@ public function testPagePaths() {
   }
 
   /**
+   * Tests the 'admin_theme' page display option.
+   */
+  public function testAdminTheme() {
+    $account = $this->drupalCreateUser(['view the administration theme']);
+    $this->drupalLogin($account);
+
+    // Use distinct default and administrative themes for this test.
+    $this->container->get('theme_handler')->install(['seven']);
+    $this->config('system.theme')->set('admin', 'seven')->save();
+
+    // Check that the page has been served with the default theme.
+    $this->drupalGet('test_page_display_200');
+    $this->assertSession()->responseNotContains('seven/css/base/elements.css');
+
+    $view = $this->config('views.view.test_page_display');
+    $view->set('display.page_3.display_options.admin_theme', TRUE)->save();
+    $this->container->get('router.builder')->rebuild();
+
+    // Check that the page was served with the administrative theme.
+    $this->drupalGet('test_page_display_200');
+    $this->assertSession()->responseContains('seven/css/base/elements.css');
+  }
+
+  /**
    * Tests that we can successfully change a view page display path.
    *
    * @param string $path
diff --git a/core/modules/views/tests/src/Functional/Update/AdminThemeOptionUpdateTest.php b/core/modules/views/tests/src/Functional/Update/AdminThemeOptionUpdateTest.php
new file mode 100644
index 0000000000..12117aaa4a
--- /dev/null
+++ b/core/modules/views/tests/src/Functional/Update/AdminThemeOptionUpdateTest.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Drupal\Tests\views\Functional\Update;
+
+use Drupal\FunctionalTests\Update\UpdatePathTestBase;
+
+/**
+ * Tests Views administrative theme page display option update.
+ *
+ * @group views
+ */
+class AdminThemeOptionUpdateTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8-rc1.bare.standard.php.gz',
+    ];
+  }
+
+  /**
+   * Tests the updating of views dependencies to image styles.
+   */
+  public function testUpdateAdminThemeOption() {
+    // Check that admin_theme option doesn't exist in 'content' view.
+    $options = $this->config('views.view.content')
+      ->get('display.page_1.display_options');
+    $this->assertArrayNotHasKey('admin_theme', $options);
+
+    // Run updates.
+    $this->runUpdates();
+
+    // Check that admin_theme option was added in 'content' view and is TRUE.
+    $options = $this->config('views.view.content')
+      ->get('display.page_1.display_options');
+    $this->assertArrayHasKey('admin_theme', $options);
+    $this->assertFalse($options['admin_theme']);
+  }
+
+}
diff --git a/core/modules/views/views.post_update.php b/core/modules/views/views.post_update.php
index 28c0f5c7ad..ec722f4359 100644
--- a/core/modules/views/views.post_update.php
+++ b/core/modules/views/views.post_update.php
@@ -256,3 +256,20 @@ function views_post_update_entity_link_url() {
     }
   }
 }
+
+/**
+ * Fix views with page display administrative theme option.
+ */
+function views_post_update_admin_theme() {
+  $config_factory = \Drupal::configFactory();
+  foreach ($config_factory->listAll('views.view.') as $name) {
+    $view = $config_factory->getEditable($name);
+    foreach ($view->get('display') as $display_id => $display) {
+      // Deal only with page displays.
+      if ($display['display_plugin'] == 'page') {
+        $trail = "display.$display_id.display_options.admin_theme";
+        $view->set($trail, FALSE)->save();
+      }
+    }
+  }
+}
