.NET ROUTING и ajax sys не определены - PullRequest
0 голосов
/ 25 августа 2009

Всякий раз, когда маршрутизация .NET включена в мой web.CONFIG, я получаю неопределенную ошибку sys, которая препятствует загрузке ajax.

Я использую .net 3.5 w / c #

любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 11 февраля 2010

Вам необходимо использовать ограничения маршрутов на ваших маршрутах, это означает, что вы должны добавить RouteValueDictionary в экземпляре Route в свойстве Contraints

В следующем примере показано, как использовать виртуальную папку для обозначения UICulture.

например:.

RouteTable.Routes.Add(new Route("{locale}/{page}", new CultureRouter())
{
    Constraints = new RouteValueDictionary() { 
        { "locale", "[a-z]{2}-[a-z]{2}" } ,
        { "page", "([a-z0-9]*).aspx" }
    }
});
RouteTable.Routes.Add(new Route("{folder}/{page}", new CultureRouter())
{
    Constraints = new RouteValueDictionary() { 
        { "page", "([a-z0-9]*).aspx" }
    }
});
RouteTable.Routes.Add(new Route("{locale}/{folder}/{page}", new CultureRouter())
{
     Constraints = new RouteValueDictionary() { 
          { "locale", "[a-z]{2}-[a-z]{2}" } ,
          { "page", "([a-z0-9]*).aspx" }
     }
});

В этом случае этот маршрут оценивает регулярное выражение для ключа локали и ключа страницы, а затем вам нужно оценить все ключи в вашем классе IRouteHandler

например:

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    StringBuilder virtualPath = new StringBuilder("~/Pages/");

    if (requestContext.RouteData.Values.ContainsKey("locale"))
    {
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(requestContext.RouteData.Values["locale"].ToString());
    }

    if (requestContext.RouteData.Values.ContainsKey("folder"))
    {
        virtualPath.AppendFormat("{0}/", requestContext.RouteData.Values["folder"].ToString());
    }

    if (requestContext.RouteData.Values.ContainsKey("page"))
    {
        virtualPath.Append(requestContext.RouteData.Values["page"].ToString());
    }

    IHttpHandler pageHandler = BuildManager.CreateInstanceFromVirtualPath(virtualPath.ToString(), typeof(Page)) as IHttpHandler;

    return pageHandler;
}

Я надеюсь, что это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...