Возможно, это не так в тот момент, когда был задан вопрос, но с Chrome 66 автовоспроизведение заблокировано.
http://bgr.com/2018/04/ 18 / Google-хром-66-загрузка-авто-игры-видео-блок /
Он использует ваш макет. Проблема в том, что ваш макет буквально вызывает исключение. Теперь причина, по которой он генерирует исключение при использовании Razor Page по сравнению с традиционным представлением MVC, заключается в том, что в Razor Pages отсутствует контроллер, и поэтому ViewContext.RouteData.Values["controller"]
имеет значение null. Попытка отозвать ToString()
, что приводит к вашему NullReferenceException
.
В Razor Pages ни «action», ни «controller» не будут в ваших RouteData, поскольку ни одна из этих концепций не применима. Вместо этого у вас будут «страница» и «обработчик». Если вы хотите использовать один и тот же макет как с Razor Pages, так и с представлениями MVC, то вам необходимо настроить логику в отношении того, что вы делаете с именем контроллера, чтобы приспособить и Razor Pages.