У меня есть настройка маршрутизации веб-формы в моем проекте asp.net webforms 3.5sp1.Я хотел бы, чтобы файлы для сайта находились в каталоге с названием content, включая домашнюю страницу, поскольку я хотел бы запускать несколько сайтов, используя одну и ту же систему.
В MVC есть пустая страница по умолчанию и домашняя страницанаходится в папке с именем дома.Я не могу воспроизвести это поведение с помощью маршрутизации веб-формы, но хотел бы.Пустая страница всегда попадает первой.обработчик маршрута нажимается вторым - он распознает, что запрос относится к домашней странице, и устанавливает страницу маршрутизации, но не используется.код обработчика маршрута прост:
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext
requestContext)
{
string file = requestContext.RouteData.GetRequiredString("File");
string id = requestContext.RouteData.GetRequiredString("Id");
string queryString = "?menuid=" + id;
VirtualPath = "~/" + file;
HttpContext.Current.RewritePath(
string.Concat(
VirtualPath,
queryString));
var page = BuildManager.CreateInstanceFromVirtualPath
(VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
Есть ли в любом случае, я могу это сделать?
Обновление Вот мой код маршрута global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
Domain.RepositoryFactory repo = new RepositoryFactory();
foreach (var x in repo.MenuRepository.GetAllEnabledGetMenus())
{
if (string.IsNullOrEmpty(x.Url))
{
//add default
System.Web.Routing.RouteTable.Routes.Add(
new Route("Default.aspx",
new RouteValueDictionary(new { File = x.FileName,
Id = x.Id.ToString() }),
new CoreRouteHandler()));
}
else
{
string url = x.Url;
if(x.Url.StartsWith("/"))
{
url = url.Remove(0, 1);
}
System.Web.Routing.RouteTable.Routes.Add(
new System.Web.Routing.Route(url,
new RouteValueDictionary(new {File = x.FileName,
Id = x.Id.ToString()}),
new CoreRouteHandler()));
}
}
}