我有一个http处理程序,可以获取我的自定义扩展名.page的所有请求。这适用于旧时尚asp.net,我只是做一个Server.Transfer到所选的aspx文件。 但是,我想将其移至MVC,而是重新路由到Controller或View。虽然我更喜欢控制器,但无关紧要。
对此主题的任何帮助表示赞赏。
谢谢!
答案 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,因此您唯一的选择是重定向。