1

问题

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

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

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

一些笔记

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

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

4

2 回答 2

3

我认为你应该使用:

  1. ASP.NET 路由

例如。:

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");
}

& 在“Articles.aspx.cs”上,您可以使用以下方法获取“article-id”:

string article-id = Page.RouteData.Values["article-id"] as string;
  1. 使用URL 重写模块

在此处输入图像描述


  1. urlrewriter.net

在此处输入图像描述

于 2012-09-28T08:14:37.170 回答
1

详细信息:您是否可以使用

http://www.mysite/Articles?a= {article-id}

如果可以,Microsoft 友好网址对您有好处。您不需要更改任何现有功能,只需添加包,然后在 Global.asax 文件中添加一行。此外,您的所有其他网址都是干净的(即http://www.mysite/Articleshttp://www.mysite/About)。它适用于网站/表单,但不适用于网页(即 Web Matrix)

解决方案:

  1. 在解决方案资源管理器中,右键单击您的网站并选择“管理 Nuget 包..”
  2. 按“仅稳定版”下拉菜单并选择“包括预发行版”(它在预发行版中)
  3. 在搜索框中输入“Microsoft.AspNet.FriendlyUrls”
  4. 选择“安装”
  5. 添加一个全局应用程序类“Global.asax”
  6. 在 Application_Start 方法中添加以下行

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

  7. 您现在将拥有 FriendlyURL

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

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


更多信息的链接:

有关 Microsoft 的友好 URL 包的信息

于 2012-10-30T04:39:24.827 回答