【发布时间】:2009-12-16 16:29:51
【问题描述】:
我有一个 web 表单,例如 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;
}
}
【问题讨论】:
标签: unit-testing webforms routing