Для первой части вашего вопроса, как упоминалось в комментариях, используйте некоторый тип объекта потока для передачи данных PDF.Прямо сейчас вы передаете файл в локальную файловую систему, а затем передаете его еще раз во встроенный тег для отображения.Просто покончите с промежуточным этапом сохранения в файловой системе и сделайте все это в памяти (хотя это не совсем модель эффективности и может плохо масштабироваться).
Относительно второй частиВаш вопрос, это не так просто.MVC действительно не имеет понятия состояния (viewstate и т. Д.), Поэтому у него нет событий, которые могут быть вызваны изменением состояния (скажем, переходом от страницы).
Вы можете использовать Javascript для обнаружения пользователя, удаляющегося от вашей страницы (windows.onunload), который вызывает (C # / VB) метод для удаления файла из файловой системы.Вероятно, вам придется использовать AJAX для обратной связи с сервером, используя метод HTTP POST, и прослушивать что-либо в конечной точке URL для запуска вашего метода, удаляющего файл.