加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在MVC 3 RC中实现TransferResult – 不起作用

发布时间:2020-12-16 07:44:00 所属栏目:asp.Net 来源:网络整理
导读:任何想法如何解决以下问题? TransferResult有一个很好的实现here,它在MVC 1,2上运行得很好但不适用于MVC 3 RC. public class TransferResult : RedirectResult { public TransferResult(string url): base(url) { } public override void ExecuteResult(Con
任何想法如何解决以下问题?

TransferResult有一个很好的实现here,它在MVC 1,2上运行得很好但不适用于MVC 3 RC.

public class TransferResult : RedirectResult 
{ 
    public TransferResult(string url): base(url) 
    { 
    } 

    public override void ExecuteResult(ControllerContext context) 
    { 
        var httpContext = HttpContext.Current; 
        httpContext.RewritePath(Url,false); 
        IHttpHandler httpHandler = new MvcHttpHandler(); 
        httpHandler.ProcessRequest(HttpContext.Current); 
    } 
}

在MVC 3 RC上,httpHandler.ProcessRequest失败并且只能在引发’HttpApplication.AcquireRequestState’事件之前调用’HttpContext.SetSessionStateBehavior’.

如何重写此代码以使其工作?

UPD:如果在VS 2010内置开发服务器上运行,代码可以工作,但无法在IIS 7.5 localhost上运行.问题仍未解决.

UPD2 TransferMesult的answer contains a modified implementation与MVC3一起使用.事实证明它比过去更简单.

解决方法

无法重现.以下在MVC 3 RC(Razor和WebForms)中完美无缺:

public class TransferResult : RedirectResult
{
    public TransferResult(string url)
        : base(url)
    {
    }

    public override void ExecuteResult(ControllerContext context)
    {
        var httpContext = HttpContext.Current;
        httpContext.RewritePath(Url,false);
        IHttpHandler httpHandler = new MvcHttpHandler();
        httpHandler.ProcessRequest(HttpContext.Current);
    }
}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return new TransferResult("/Home/About");
    }

    public ActionResult About()
    {
        return View();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读