diff --git a/entityreference.module b/entityreference.module
index c0c9f58..fffdf5c
--- a/entityreference.module
+++ b/entityreference.module
@@ -1349,9 +1349,14 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
           continue;
         }
 
-        // Calling EntityReferenceHandler::getLabel() would make a repeated,
-        // wasteful call to entity_access().
-        $label = entity_label($field['settings']['target_type'], $item['entity']);
+        if (get_class($handler) == 'EntityReference_SelectionHandler_Views') {
+          $label = $handler->getLabel($item['entity']);
+        }
+        else {
+          // Calling EntityReferenceHandler::getLabel() would make a repeated,
+          // wasteful call to entity_access().
+          $label = entity_label($field['settings']['target_type'], $item['entity']);
+        }
 
         // Check if the settings and access allow a link to be displayed.
         $display_link = $display['settings']['link'] && $item['access'];
diff --git a/plugins/selection/EntityReference_SelectionHandler_Views.class.php b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
index cbed33b..84f04c7
--- a/plugins/selection/EntityReference_SelectionHandler_Views.class.php
+++ b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
@@ -177,7 +177,23 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
    * Implements EntityReferenceHandler::getLabel().
    */
   public function getLabel($entity) {
-    return entity_label($this->field['settings']['target_type'], $entity);
+    $id = entity_id($this->field['settings']['target_type'], $entity);
+    $display_name = $this->field['settings']['handler_settings']['view']['display_name'];
+    $args = $this->handleArgs($this->field['settings']['handler_settings']['view']['args']);
+    $label = entity_label($this->field['settings']['target_type'], $entity);
+    if ($this->initializeView(NULL, 'CONTAINS', 0, $id)) {
+      // Get the results.
+      $entities = $this->view->execute_display($display_name, $args);
+      if (!empty($entities)) {
+        $label = array_pop($entities);
+        $label = preg_replace('/\s+/', ' ', str_replace(PHP_EOL, '', trim(decode_entities(strip_tags($label)))));
+        // Names containing commas or quotes must be wrapped in quotes.
+        if (strpos($label, ',') !== FALSE || strpos($label, '"') !== FALSE) {
+          $label = '"' . str_replace('"', '""', $label) . '"';
+        }
+      }
+    }
+    return $label;
   }
 
   /**
