Маршрута веб-форм asp.net 4.0 - по умолчанию / RightCard
-
01-10-2019 - |
Вопрос
Я там простой способ при использовании маршрутизации ASP.NET 4.0 с веб-форм для производства маршрута, который будет действовать как какой-то подстановочный знак?
Мне кажется, что в WebForms вы должны указать маршрут для каждой страницы - я ищу какой-то универсальный маршрут, который можно использовать, где ничего конкретного не требуется, возможно отображение непосредственно от пути к пути так ...
http://somedomain.com/folder1/folder2/page. возможно, будет отображаться на папку1 / папку2 / Page.aspx
Какие-либо предложения?
Спасибо
Решение
Вы можете сопоставить все остальные маршруты, как это:
routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");
В этом случае мы знаем все маршруты и хотите отправить что-нибудь еще на страницу «отсутствуют» / 404. Просто обязательно наденьте это как прошлой Маршрут, так как это подстановочный знак и все поймает.
В качестве альтернативы вы можете зарегистрировать маршрут так же, но внутренне отображение на странице, как это:
routes.Add(new Route("{*value}", new DefaultRouteHandler()));
Этот класс обработчика сделает ваше отображение подстановки, что-то вроде этого:
public class DefaultRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//Url mapping however you want here:
var pageUrl = requestContext.RouteData.Route.Url + ".aspx";
var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page))
as IHttpHandler;
if (page != null)
{
//Set the <form>'s postback url to the route
var webForm = page as Page;
if (webForm != null)
webForm.Load += delegate { webForm.Form.Action =
requestContext.HttpContext.Request.RawUrl; };
}
return page;
}
}
Это немного сломано в нечетных местах для предотвращения горизонтальной прокрутки, но вы получаете общую точку. Опять же, убедитесь, что это прошлой маршрут, в противном случае это будет справиться все ваши маршруты.
Другие советы
Кроме того - имейте в виду, что вам нужно добавить исключение для файлов .axd в файле global.Asax, если в вашем веб-приложении есть элементы управления валидацией:
В противном случае вы будете продолжать получать синтаксическую ошибку, поскольку маршрутизация выбирает файлы .axd и неправильно загружает файлы JavaScript, необходимые для контроля проверки.