在ASP.Net MVC3中获取System.Web.UI.Page对象(只读)

时间:2012-02-29 22:21:51

标签: asp.net-mvc-3

我正在构建一个MVC3网站(C#,Razor),该网站使用VB.Net编写的一些类来执行一些复杂的验证工作。这些类在构造函数中需要一个System.Web.UI.Page对象,因为它们使用Page-object中的Request.Form和Server.MapPath。

我可以完美地使用那些旧的VB.Net类,但我需要Page-object。有没有办法实现这个目标?或者我应该重构VB.Net类中的大量代码? (要花几个小时......)

我读到了为什么你不应该使用Page-object,因为有更好的选择,但我只需要它能够使用旧的库,这些库将在几年后重构......

THX!

1 个答案:

答案 0 :(得分:0)

您可以创建一个新的页面对象,这使Server.MapPath()能够开箱即用。请求是另一个故事。我所知道的最简单的方法就是反思:

        var page = new Page();
        var requestField = typeof(Page).GetField("_request", BindingFlags.Instance | BindingFlags.NonPublic);
        requestField.SetValue(page, HttpContext.Current.Request);