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アプリは中程度の信頼を対象としているため、Reflectionは実際にはオプションではありません。