【问题标题】:Using UrlData appended to root使用附加到根目录的 UrlData
【发布时间】:2014-04-25 17:11:25
【问题描述】:

在 Razor 中使用 ASP.NET 网页并给出以下两个 URL:

http://example.com/sausages
http://example.com/bacon

是否可以在站点的根目录中创建一个可以检索“香肠”和“培根”作为 URL 数据的内容页面?例如:

Dim a As String = UrlData(0) ' This will be "sausages" or "bacon"

如果 URL 格式不重要,那么我可以通过创建 Razor 页面(例如 page.vbhtml)来处理请求来轻松做到这一点:

http://example.com/page/sausages
http://example.com/page/bacon

但要求是 URL 必须采用最初指定的格式。

【问题讨论】:

    标签: asp.net vb.net razor


    【解决方案1】:

    内置路由不支持您想做的事情。 URL 的第一段必须与物理文件匹配。但是,您可以使用 WebPageRouteHandler 包(可通过 Nuget:https://www.nuget.org/packages/WebPageRouteHandler/ 获得)来执行此操作。

    一旦你安装了这个包,你只需要添加一个路由:

    RouteTable.Routes.MapWebPageRoute("{*stem}", "~/Page.vbhtml")
    

    所有内容都将被路由到 Page.vbhtml,其中以下内容将为您提供“培根”或“香肠”,或者实际上是域之后的任何内容:

    Dim values = Context.GetRouteValue("stem")
    

    您可以在此处阅读有关该软件包的更多信息:http://www.mikesdotnetting.com/Article/187/More-Flexible-Routing-For-ASP.NET-Web-Pages

    【讨论】:

    • 很棒的包裹和文章!我不得不将它转换为 VB.NET,但这很简单。非常感谢。
    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2013-09-14
    • 2014-05-29
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多