MVC показывает сообщение в теге объекта с ошибкой

#c# #asp.net-mvc

#c# #asp.net-mvc

Вопрос:

У меня есть следующий код для извлечения файла pdf и отображения в представлении (это частичный загрузочный модальный вид). Все хорошо, за исключением случаев, когда PDF-файл пуст или выдается какая-либо ошибка, я вижу только пустой модальный. Кто-нибудь знает, есть ли способ, которым я могу отправить короткое сообщение типа «извините, ошибка!» обратно в представление при возникновении ошибки?

Кроме того, оно должно быть в представлении, а не во всплывающем окне предупреждения.

Частичный просмотр:

 <div class="modal-body" id="modal-content">
    <object data="@Url.Action( GeneratePDF, MyPDF)"></object>
</div>
  

Контроллер:

 public FileStreamResult GeneratePDF()
{
    MemoryStream memStream = SomeService.GetPDFinStream();
    if ( memStream.Length <= 0 )
    {
       // I want to throw a simple error msg back, what to do?
    }
    else
    {
        return new FileStreamResult(memStream);
    }
}
  

Комментарии:

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

Ответ №1:

Используйте TempData для хранения сообщения об ошибке и в представлении поместите JavaScript, чтобы, если сообщение об ошибке не равно нулю, затем отобразите предупреждение

     if ( memStream.Length <= 0 )
    {
       // I want to throw a simple error msg back, what to do?
      TempData["CustomNullError"] = "sorry, error";
    }
  

Просмотр кода

     <script type="text/javascript">
        $(document).ready(function () {
            var msg = '@TempData["CustomNullError"]';
            if (msg.length > 1) {
                alert(msg);//
                // or set error message in label/ span
            }
        });
    </script>
  

Комментарии:

1. Предупреждающее сообщение не появляется… Я думаю, это может быть связано с тем, что мой частичный просмотр находится внутри модального окна. В любом случае, если я хочу вместо этого показать сообщение на странице. Я пробовал этот способ, но все еще не работает, не могли бы вы помочь? <div class=»модальный-body» id=»general-modal-content»> <div id=»модальная ошибка»>Сообщение об ошибке</div> <div id=»модальный-PDF»> Константы. Действия. Сгенерировать счет, константы. Контроллеры. BillPresentment )» ширина =»100%» высота =»600″></object> </div> </div>

2. <script type=»text/javascript»> $(document).готово(function () { $(‘#modal-Error’).hide(); var msg = ‘@TempData[«CustomNullError»]’; if (msg.length > 1) { оповещение (msg); $(‘#modal-PDF’).hide(); $(‘#modal-Error’).show(); } }); </script>

3. JavaScript должен быть размещен в нижней части основного вида, где отображается Частичный вид.