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

asp.net 4.0 web表单路由 – 默认/通配符路由

发布时间:2020-12-15 22:51:37 所属栏目:asp.Net 来源:网络整理
导读:当我使用ASP.NET 4.0路由与Web窗体来生成一个可以作为某种通配符的路由时,我有一个简单的方法? 在我看来,在WebForms中,您必须为每个页面指定一个路由 – 我正在寻找某种通用路由,可以在没有特定要求的地方使用,可能直接从路径映射到路径,所以… http://some
当我使用ASP.NET 4.0路由与Web窗体来生成一个可以作为某种通配符的路由时,我有一个简单的方法?

在我看来,在WebForms中,您必须为每个页面指定一个路由 – 我正在寻找某种通用路由,可以在没有特定要求的地方使用,可能直接从路径映射到路径,所以…

http://somedomain.com/folder1/folder2/page可能会映射到folder1 / folder2 / page.aspx

有什么建议么?

谢谢

解决方法

您可以匹配所有剩余的路线,如下所示:
routes.MapPageRoute("defaultRoute","{*value}","~/Missing.aspx");

在这种情况下,我们知道所有的路线,并想要发送任何其他的“缺少”/ 404页面.只要确保将其作为最后一条路线,因为它是一个通配符,并且将捕获所有内容.

或者,您可以以相同的方式注册路由,但内部映射到页面,如下所示:

routes.Add(new Route("{*value}",new DefaultRouteHandler()));

该处理程序类将执行通配符映射,如下所示:

public class DefaultRouteHandler : IRouteHandler
{
  public IHttpHandler GetHttpHandler(RequestContext requestContext)
  { 
    //Url mapping however you want here:
    var pageUrl = requestContext.RouteData.Route.Url + ".aspx";

    var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl,typeof(Page)) 
               as IHttpHandler;
    if (page != null)
    {
      //Set the <form>'s postback url to the route
      var webForm = page as Page;
      if (webForm != null) 
         webForm.Load += delegate { webForm.Form.Action = 
                                    requestContext.HttpContext.Request.RawUrl; };
    }
    return page;
  }
}

这是有点奇怪的地方,以防止水平滚动,但你得到的总体来说.再次,确保这是最后一条路线,否则它将处理所有的路线.

(编辑:李大同)

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

    推荐文章
      热点阅读