从URL中检索值在目标页面上重新路由?

时间:2009-03-17 00:35:32

标签: asp.net query-string url-routing

好的......让URL路由工作正常,但无法弄清楚如何实际读取目标页面中的值。

此处的一个示例显示了使用RequestContext中的RouteValue对象。现在所有这些都在System.Web.Routing命名空间中,但是每个人似乎只将它们连接到MVC。 RequestContext来自哪里?

我如何阅读这些参数???

Querystring也是空白的。

TIA! 凯文

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题...耶! :)

开始乱搞东西,看到IHttpHandler接口为GetHttpHandler方法提供了RequestContext。

所以,我修改了我的基页类(我总是在System.Web.UI.Page和我自己的页面之间放一个层,只为此目的调用它为BasePage或类似的)。所以我在PVBasePage上添加了一个公共属性来接收RequestContext对象。

public RequestContext RequestContext { get; set; }

然后,我的路由类代码如下:

IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
    // create the page object as my own page...
    var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath
        , typeof(PVBasePage)) as PVBasePage;
    // pass in the request context
    page.RequestContext = requestContext;
    // return this page in the form of a IHttpHandler
    return page as IHttpHandler;
}

因此,不像在示例代码中那样直接创建实例作为IHttpHandler,而是将其创建为我自己的页面。设置请求上下文属性,然后将页面返回给调用者AS IHttpHandler。

经过测试,确实有效。 WOO HOO!

希望这可以帮助其他人。