好的......让URL路由工作正常,但无法弄清楚如何实际读取目标页面中的值。
此处的一个示例显示了使用RequestContext中的RouteValue对象。现在所有这些都在System.Web.Routing命名空间中,但是每个人似乎只将它们连接到MVC。 RequestContext来自哪里?
我如何阅读这些参数???
Querystring也是空白的。
TIA! 凯文
答案 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!
希望这可以帮助其他人。