Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当涉及参数时,如何在ASP.NET 4.0中指定url映射? 问题_Asp.net_Web Config_Url Routing_Asp.net 4.0_Url Mapping - Fatal编程技术网

当涉及参数时,如何在ASP.NET 4.0中指定url映射? 问题

当涉及参数时,如何在ASP.NET 4.0中指定url映射? 问题,asp.net,web-config,url-routing,asp.net-4.0,url-mapping,Asp.net,Web Config,Url Routing,Asp.net 4.0,Url Mapping,我有一个网站,里面有一些文章。使用数据库访问文章,并在单个页面上写入结果。当要访问某篇文章时,我需要文章id,我只需要进入页面:http://www.mysite/Articles.aspx?a={article id} 这很好,但不是很友好,也不可扩展。我想做的是重定向表单中的每个url:http://www.mysite/articles/{article id}转到页面http://www.mysite/Articles.aspx?a={article id} 我知道使用Web.Confi

我有一个网站,里面有一些文章。使用数据库访问文章,并在单个页面上写入结果。当要访问某篇文章时,我需要文章id,我只需要进入页面:
http://www.mysite/Articles.aspx?a={article id}

这很好,但不是很友好,也不可扩展。我想做的是重定向表单中的每个url:
http://www.mysite/articles/{article id}
转到页面
http://www.mysite/Articles.aspx?a={article id}

我知道使用
Web.Config
可以使用
urlMappings
设置,但不知道如何在那里插入正则表达式

一些注释 请考虑我想要一个简单的翻译工具。我不想编辑现有页面。这个解决方案应该对我的应用程序组件尽可能透明


获得解决方案的最佳实践是什么?

我认为您应该使用:

  • 例如:

    &在“Articles.aspx.cs”上,您可以通过以下方式获得“article id”:

  • 使用




  • 我认为你应该使用:

  • 例如:

    &在“Articles.aspx.cs”上,您可以通过以下方式获得“article id”:

  • 使用




  • 详细信息:如果Microsoft友好URL对您有好处,您是否可以使用

    {article id}

    。您不需要更改任何现有功能,只需添加包,然后向Global.asax文件添加一行即可。另外,所有其他Url都是干净的(即)。它适用于网站/表单,但不适用于网页(即Web矩阵)

    解决方案:

  • 在解决方案资源管理器中,右键单击您的网站并选择“管理Nuget软件包…”
  • 按下显示“仅稳定”的下拉列表,然后选择“包括预发布”(它处于预发布状态)
  • 在搜索框中输入“Microsoft.AspNet.FriendlyURL”
  • 选择“安装”
  • 添加全局应用程序类“Global.asax”
  • 在应用程序启动方法中添加以下行

    RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes)

  • 现在您将拥有FriendlyURL

  • 注意:如果您使用的是网站,则需要删除以下文件才能使其正常工作(该文件适用于web表单。一旦它成为稳定版本,我相信您不需要删除这些文件)

    • Site.Mobile.Master
    • Site.Mobile.Master.designer.cs
    • ViewSwitcher.ascx
    • ViewSwitcher.ascx.designer.cs

    更多信息的链接:


    详细信息:如果Microsoft友好URL对您有好处,您是否可以使用

    {article id}

    。您不需要更改任何现有功能,只需添加包,然后向Global.asax文件添加一行即可。另外,所有其他Url都是干净的(即)。它适用于网站/表单,但不适用于网页(即Web矩阵)

    解决方案:

  • 在解决方案资源管理器中,右键单击您的网站并选择“管理Nuget软件包…”
  • 按下显示“仅稳定”的下拉列表,然后选择“包括预发布”(它处于预发布状态)
  • 在搜索框中输入“Microsoft.AspNet.FriendlyURL”
  • 选择“安装”
  • 添加全局应用程序类“Global.asax”
  • 在应用程序启动方法中添加以下行

    RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes)

  • 现在您将拥有FriendlyURL

  • 注意:如果您使用的是网站,则需要删除以下文件才能使其正常工作(该文件适用于web表单。一旦它成为稳定版本,我相信您不需要删除这些文件)

    • Site.Mobile.Master
    • Site.Mobile.Master.designer.cs
    • ViewSwitcher.ascx
    • ViewSwitcher.ascx.designer.cs

    更多信息的链接:


    我正在检查,看起来不错!非常感谢,但不幸的是,我需要一些对我的页面透明的东西。我想让我的页面保持原样。我需要的是一个简单的翻译工具。您提供的解决方案(IIS重写)非常棒,但我的应用程序是托管的,我认为我无法在该组件的服务器上执行操作(我确信我不能)。还有其他方法吗?我想我可以使用asax解决方案,将所有内容重定向到route.aspx页面,该页面将转换参数并将内容重定向到正确的URL中。。。问题是。。。我的网站上的分析怎么办?这看起来像是我可以使用的东西,但仍然不清楚:/!请看我的问题:我正在检查,看起来不错!非常感谢,但不幸的是,我需要一些对我的页面透明的东西。我想让我的页面保持原样。我需要的是一个简单的翻译工具。您提供的解决方案(IIS重写)非常棒,但我的应用程序是托管的,我认为我无法在该组件的服务器上执行操作(我确信我不能)。还有其他方法吗?我想我可以使用asax解决方案,将所有内容重定向到route.aspx页面,该页面将转换参数并将内容重定向到正确的URL中。。。问题是。。。我的网站上的分析怎么办?这看起来像是我可以使用的东西,但仍然不清楚:/!请看一下我这里的问题:旁注-这是一个可伸缩的解决方案,不确定为什么您认为它不是旁注-这是一个可伸缩的解决方案,不确定为什么您认为它不是
    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }
    
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("Articles",
            "articles/{article-id}/",
            "~/Articles.aspx");
    }
    
    string article-id = Page.RouteData.Values["article-id"] as string;