У меня есть веб-форма, такая как mysite.com/list.aspx?state=florida&city=miami, которую я хочу, чтобы пользователи просматривали с помощью mysite.com/florida/miami/, и для этого я использую маршрутизацию. Затем вместо использования параметров строки запроса мне пришлось использовать HttpContext.Current.Items [key] для получения значений на моей странице list.aspx. Я включил код ниже.
Я хотел бы знать, каковы лучшие практики для модульного тестирования этого. Кроме того, есть ли лучший способ реализовать это без изменения моего кода на странице list.aspx?
Код:
Пример моего файла Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route("{state}", new CustomRouteHandler("/list.aspx")));
routes.Add(new Route("{state}/{city}", new CustomRouteHandler("/list.aspx")));
}
Образец CustomerRouteHandler:
public class CustomRouteHandler : IRouteHandler
{
public CustomRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
foreach (var urlParm in requestContext.RouteData.Values)
{
requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value;
}
IHttpHandler page = BuildManager.CreateInstanceFromVirtualPath (VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
}