在Asp.Net + C#中使用URL路由的SEO友好URL

时间:2014-02-28 10:57:01

标签: c# asp.net

我有一个简单的Web表单应用程序。我有一个名为“show.aspx”的页面,它负责通过文章ID显示我的文章。

起初,我曾经使用QueryString来获取文章ID,并根据我显示的Id I文章。但是我知道网址不是SEO友好的。

我的网址是这样的:mysite.com/article/show.aspx?articleid=7737

所以我决定转向URL重写,但由于我没有经验,我最终使用了URL路由技术。

所以目前我的网址是这样的:mysite.com/article/7737/ 它工作正常。我使用{articleid}参数获得了文章的价值,该参数在我的global.asax文件中定义。

但我希望得到这样的网址: mysite.com/article/article-title-from-database /

是否可以从数据库中获取标题并重写url并在每个单词之间应用连字符?

如果我需要传递两个这样的参数,即使我没问题: 文章/ {条款ArticleID} / {TITLE} /

以下是我的Global.asax

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        RegisterRoutes(RouteTable.Routes);
    }
    void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("ArticleDetails","article/{articleId}", "~/article/show.aspx");
    }

</script>

和我的show.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        if (RouteData.Values["articleId"].ToString() != string.Empty)
        {
            Articles.rptArticle = rptDisplayArticle;
            Articles.rptHashTags = rptHashTags;
            Comments.rptComments = rptDisplayComments;
            Articles.articleId = RouteData.Values["articleId"] as string;
            Articles.Show();
            if (!Comments.show())
            { 
                lblNoComments.Text = "NO COMMENTS";
            }
            if (Authorization.Authorize())
            {
                panCommentPost.Visible = true;
                ltLoginPrompt.Text = "POST A COMMENT";
            }
        }
        else
        { Server.Transfer("~/404.html"); }

0 个答案:

没有答案