diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index f17df18..3d1775d 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -875,10 +875,16 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
       $this->documentSelfTokens($options[t('Fields')]);
 
       // Default text.
-      $output = '<p>' . $this->t('You must add some additional fields to this display before using this field. These fields may be marked as <em>Exclude from display</em> if you prefer. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.') . '</p>';
+
+      $output = [];
+      $output[] = [
+        '#markup' => '<p>' . $this->t('You must add some additional fields to this display before using this field. These fields may be marked as <em>Exclude from display</em> if you prefer. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.') . '</p>',
+      ];
       // We have some options, so make a list.
       if (!empty($options)) {
-        $output = '<p>' . $this->t("The following replacement tokens are available for this field. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.") . '</p>';
+        $output[] = [
+          '#markup' => '<p>' . $this->t("The following replacement tokens are available for this field. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.") . '</p>',
+        ];
         foreach (array_keys($options) as $type) {
           if (!empty($options[$type])) {
             $items = array();
@@ -890,7 +896,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
               '#items' => $items,
               '#list_type' => $type,
             );
-            $output .= $this->getRenderer()->render($item_list);
+            $output[] = $item_list;
           }
         }
       }
@@ -901,7 +907,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
       $form['alter']['help'] = array(
         '#type' => 'details',
         '#title' => $this->t('Replacement patterns'),
-        '#value' => SafeMarkup::set($output),
+        '#value' => $output,
         '#states' => array(
           'visible' => array(
             array(
diff --git a/core/modules/views_ui/src/Form/Ajax/ViewsFormBase.php b/core/modules/views_ui/src/Form/Ajax/ViewsFormBase.php
index 3c0e435..6ca7131 100644
--- a/core/modules/views_ui/src/Form/Ajax/ViewsFormBase.php
+++ b/core/modules/views_ui/src/Form/Ajax/ViewsFormBase.php
@@ -12,6 +12,7 @@
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormState;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Render\RenderContext;
 use Drupal\views_ui\ViewUI;
 use Drupal\views\ViewEntityInterface;
 use Drupal\views\Ajax;
@@ -205,8 +206,13 @@ protected function ajaxFormWrapper($form_class, FormStateInterface &$form_state)
     }
     $form_state->disableCache();
 
-    $form = \Drupal::formBuilder()->buildForm($form_class, $form_state);
+    $render_context = new RenderContext();
+    $callable = function () use ($form_class, &$form_state) {
+      return \Drupal::formBuilder()->buildForm($form_class, $form_state);
+    };
+    $form = $renderer->executeInRenderContext($render_context, $callable);
     $output = $renderer->renderRoot($form);
+
     drupal_process_attached($form);
 
     // These forms have the title built in, so set the title here:
diff --git a/core/modules/views_ui/src/Tests/FieldUITest.php b/core/modules/views_ui/src/Tests/FieldUITest.php
index 81d2b7e..34d4215 100644
--- a/core/modules/views_ui/src/Tests/FieldUITest.php
+++ b/core/modules/views_ui/src/Tests/FieldUITest.php
@@ -57,6 +57,11 @@ public function testFieldUI() {
     $this->assertEqual((string) $result[0], '{{ age }} == Age');
     $this->assertEqual((string) $result[1], '{{ id }} == ID');
     $this->assertEqual((string) $result[2], '{{ name }} == Name');
+
+    // Ensure the AJAX UI is responding.
+    $ajax_url = 'admin/structure/views/ajax/handler/test_view/default/field/age';
+    $this->drupalGet($ajax_url);
+    $this->assertResponse(200);
   }
 
   /**
diff --git a/core/modules/views_ui/src/Tests/UITestBase.php b/core/modules/views_ui/src/Tests/UITestBase.php
index 1fe0cec..cb676e0 100644
--- a/core/modules/views_ui/src/Tests/UITestBase.php
+++ b/core/modules/views_ui/src/Tests/UITestBase.php
@@ -74,4 +74,21 @@ public function randomView(array $view = array()) {
     return $default;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function drupalGet($path, array $options = array(), array $headers = array()) {
+    $url = $this->buildUrl($path, $options);
+
+    // Ensure that each nojs page is accessible via ajax as well.
+    if (strpos($url, 'nojs') !== FALSE) {
+      $url = str_replace('nojs', 'ajax', $url);
+      $this->drupalGet($url, $options, $headers);
+      $this->assertResponse(200);
+    }
+
+    return parent::drupalGet($path, $options, $headers);
+  }
+
+
 }
