我有一个简单的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"); }