【问题标题】:How to Assign to PageData and UrlData in a Custom Route Handler?如何在自定义路由处理程序中分配给 PageData 和 UrlData?
【发布时间】:2012-02-25 20:54:29
【问题描述】:

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

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 应用程序适用于中等信任,因此反射并不是一个真正的选择。

【问题讨论】:

    标签: asp.net razor url-routing asp.net-webpages


    【解决方案1】:

    似乎没有办法在没有反射的情况下分配 PageData 和 UrlData,因为列表被标记为只读。我的工作是创建几个帮助程序,将 url peices 存储在 HttpContext 中并将它们读回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2014-02-08
      • 2014-04-03
      • 1970-01-01
      • 2011-06-05
      • 2015-06-23
      相关资源
      最近更新 更多