2014-12-15 4 views
2

У меня есть представление, отображающее информацию о магазине, в нижней части этого представления - это частичный вид, который отображает специальные рекламные акции для данного магазина.Ошибка частичного просмотра при запросе основного представления

С этой точки зрения я сделать логотип для данного магазина, используя ниже фрагмент кода

<div class="controls"> 
    <img src="data:image;base64,@System.Convert.ToBase64String(Model.RetailerImage)" width="80" height="80" /> 
</div> 

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

Исключение типа «System.Web.HttpException» произошел в System.Web.dll, но не обрабатывался в коде пользователя Дополнительная информация: Ошибка выполнения дочернего запроса для обработчика «System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper».

Мой парциальное в нижней части окна

<fieldset class="well"> 
     @Html.Action("ListRetailerPromotions", "Promotion", Model) 
    </fieldset> 

, который называет этот контроллер

[AuthorizeRolesAttribute(RoleType.Retailer, RoleType.Administrator)] 
    public ActionResult ListRetailerPromotions(Retailer retailer) 
    { 
     PromotionViewModel pvm = new PromotionViewModel 
     { 
      RetailerId = retailer.RetailerID, 
      Promotions = UnitOfWork.Promotion.GetPromotionsForRetailer(retailer.RetailerID).ToList() 
     }; 

     return PartialView(pvm); 
    } 

Но когда я получаю желтый экран смерти, как некоторые говорят, что сообщение об ошибке отображается

Ввод не является допустимой строкой Base-64, так как содержит не-базовый символ 64, более двух отступов cha racters или незаконный символ среди прописных символов.

Но если я прокомментирую частичный обзор, все работает как ожидалось.

UPDATE Я получил его на работу, установив RetailerImage нулевого значения после того, как был ссылкой следующего

<div class="control-group"> 
       <label class="control-label" for="WebAddress"> 
        Preview 
       </label> 
       <div class="controls"> 
        <img src="data:image;base64,@System.Convert.ToBase64String(Model.RetailerImage)" width="80" height="80" /> 
       </div> 
      </div> 
      { 
       Model.RetailerImage = null; 

      } 
</div> 

который является отвратительным решением, я должен признать.

ответ

1

Попробуйте использовать Raw на вашей строке

@System.Convert.ToBase64String(@Html.Raw(Model.RetailerImage)) 

изображений Если вы видите сообщение об ошибке, он жалуется на не-базе 64 символов.

Это означает, что в каркасе HTML закодировано содержимое Model.RetailerImage. Одним из способов предотвращения этого поведения по умолчанию является использование функции Raw.

+3

Хотя это может ответить на вопрос, добавив краткое объяснение, почему и как это работает, было бы полезно также! –

+1

Нет проблем, позвольте мне добавить дополнительную информацию :) – beautifulcoder

Смежные вопросы