将请求传输到MVC控制器或View

时间:2012-02-12 17:06:16

标签: asp.net-mvc-3 asp.net-mvc-routing

我有一个http处理程序,可以获取我的自定义扩展名.page的所有请求。这适用于旧时尚asp.net,我只是做一个Server.Transfer到所选的aspx文件。 但是,我想将其移至MVC,而是重新路由到Controller或View。虽然我更喜欢控制器,但无关紧要。

对此主题的任何帮助表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

我要在RouteTable.Routes忽略的路线中添加新条目:

routes.Ignore("{*allcustomextension}",
                new {
                    allcustomextension = @".*\.ext(/.*)?"
                });

这将允许将handler作为物理资源进行调用。

要从处理程序上下文重定向到View,请使用:

System.Web.Mvc.UrlHelper.Action("ViewName", "ControllerName");

答案 1 :(得分:0)

首先,您应该只重定向到控制器,该控制器将选择要渲染的视图,但认为您不需要该自定义处理程序。尝试类似的东西(你应该以某种方式改变它以匹配你的url格式)

routes.MapRoute("page", "{controller}/{action}.page");

如果这不起作用并且你真的想从你的处理程序重定向,那么将Xander的忽略路线与

结合起来
Response.Redirect(System.Web.Mvc.UrlHelper.Action("ActionName", "ControllerName"));

Afaik,Server.Transfer仅适用于asp.net classic,因此您唯一的选择是重定向。