2012-02-25 80 views
0

如何分配给WebPage或WebPageBase的UrlData和PageData属性?我试图编写一个自定义的路由处理程序,它说属性是只读的。这就是我要完成的:如何在自定义路由处理程序中分配给PageData和UrlData?

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.Routing; 
using System.Web.WebPages; 

/// <summary> 
/// Summary description for CustomRazorRouteHandler 
/// </summary> 
public class CustomRazorRouteHandler : IRouteHandler 
{ 
    public string VirtualPath { get; set; } 

    public CustomRazorRouteHandler(string virtualPath) 
    { 
     this.VirtualPath = virtualPath; 
    } 

    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     var page = WebPage.CreateInstanceFromVirtualPath(VirtualPath); 
     foreach (var item in requestContext.RouteData.Values) 
     { 
      page.PageData[item.Key] = item.Value;  // Null reference exception 
      page.UrlData.Add(item.Value.ToString()); // Read-only error 
     } 

     var handler = WebPageHttpHandler.CreateFromVirtualPath(VirtualPath); 
     return handler; 
    } 
} 

的Web应用程序是为中等信任,这样的反思是不是一个真正的选择。

回答

0

似乎没有办法分配PageData和UrlData没有反射,因为列表被标记为只读。我的工作是创建一些帮助器,将url peices存储在HttpContext中并将其读回。

相关问题