Я делаю одностраничное приложение, и способ, которым я его настроил, заключается в том, что с использованием базового контроллера в методе OnActionExecuting() я перенаправляю неаакс-запросы к дому действие индекса. Путь все равно будет использоваться и использоваться в качестве индикатора, чтобы сообщить javascript, что делать.Прямо к действию вместо 404 страницы
Это работает отлично для чего-то вроде/login, где есть фактически/страница входа, которая обычно была бы доступна, если бы я не заблокировал ее, используя технику, о которой я упоминал.
Однако, когда я делаю шаг дальше и использую/some/other/смысл///bogus/url, который не имеет маршрута/контроллера, но имеет некоторое значение для javascript, я получаю ошибку 404.
Так что, очевидно, что я хотел бы сделать, в этой ситуации 404 я хотел бы просто загрузить действие индекса дома. В качестве альтернативы замена для моей блокировки ajax, которая перенаправляет все пути на действие основного индекса (если они не являются допустимыми маршрутами, вызванными с ajax), будет иметь тот же результат.
Я искал похожие ответы, к сожалению, одна и та же формулировка часто используется для описания вопросов, касающихся пользовательских 404 страниц, поэтому ее сложно искать.
Я пробовал ваше решение и обнаружил, что URL-адрес в адресной строке изменился. Это поведение, которое вы ожидали бы? Если это так, я думаю, что вы неправильно поняли мой вопрос: P На стороне клиента не должно быть никаких признаков перенаправления, это необходимо для поддержки описанной функции JavaScript. – braks
@braks обновлен некоторым кодом 'global.asax.cs', который достигнет того, что вам нужно. –
Это больше похоже на это! Мне нравится этот метод, поскольку он вполне настраиваемый. Одна вещь, хотя мне пришлось изменить 'Setup.GetControllerFactory();' на 'ControllerBuilder.Current.GetControllerFactory();' – braks