【问题标题】:SEO friendly URl in asp.netasp.net 中的 SEO 友好 URL
【发布时间】:2015-06-09 11:29:43
【问题描述】:

我正在创建一个 Web 应用程序。有一个默认页面,其中列出了问题。当用户单击将重定向到用户到问题文件夹中的 ViewQuestion 的问题时。在 default.aspx 页面上,我使用 datalist 控件显示问题标题。我正在为问题生成带有 id 的 url。这段代码如下。

 protected void listQuestion_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item ||
                 e.Item.ItemType == ListItemType.AlternatingItem)
        {
            LinkButton lnkTitle = (LinkButton)e.Item.FindControl("lnkQuestion");
            // lnkTitle.Style.Add("text-decoration", "none");
            PostEntity Item = (PostEntity)e.Item.DataItem;
            lnkTitle.PostBackUrl = GenerateURL(Item.Title, Item.Id);
        }
    }

    public static string GenerateURL(string title, int Id)
    {
        string strTitle = title.Trim();
        strTitle = strTitle.ToLower();
        //strTitle = strTitle.Replace();
        strTitle = strTitle.Replace(" ", "-");
        strTitle = strTitle.Trim();
        strTitle = strTitle.Trim('-');
        strTitle = "~/Questions/ViewQuestion.aspx?QuestionID=" + Id.ToString().Trim() + "/" + strTitle + ".aspx";

        return strTitle;
    }

在 global.asax 中的代码是

void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup

        RegisterRoute(RouteTable.Routes);

    }

    static void RegisterRoute(RouteCollection route)
    {
        route.MapPageRoute("Default", "Default", "~/Default.aspx");
        route.MapPageRoute("ViewQuestion", "Questions/ViewQuestion{QuestionID}", "~/Questions/ViewQuestion.aspx");
    }

获取查询字符串的视图如下:

lblQustionText.Text = this.Page.RouteData.Values["QuestionID"].ToString() as string; // giving me object reference exception 

我的pageurl是这样生成的

/Questions/ViewQuestion.aspx?QuestionID=1376/get-the-current-logged.aspx

如何为 SEO 友好的 url 制作这个示例。谢谢你的回答。

【问题讨论】:

  • @nadeem 如果您查看我使用了相同的方法。
  • 那么发生了什么?你有没有遇到任何错误
  • @nadeem 这部分我得到错误'lblQustionText.Text = this.Page.RouteData.Values["QuestionID"].ToString() as string; // 给我对象引用异常 '

标签: c# asp.net url-rewriting seo


【解决方案1】:

您的代码有两点似乎是错误的:

  1. 您的页面路径可能应该在页面名称 (ViewQuestion) 和问题 ID 之间包含一个正斜杠:

    Questions/ViewQuestion/{QuestionID}

  2. 您生成的页面URL与路由不匹配,不应包含aspx后缀且路由参数与查询参数的顺序混淆。应该是这样的

    String.Format("~/Questions/ViewQuestion/{0}?QuestionID={1}", strTitle, Id.ToString().Trim())

作为旁注,我发现您包含一个与您的路由参数名称完全相同的查询参数有点令人困惑。我的建议是对两者都使用路由参数,stackoverflow 样式:

/Questions/ViewQuestion/numerical-id/question-description

【讨论】:

  • 你能分享我需要做什么的代码吗?我第一次这样做我很困惑。我用谷歌搜索了很多次,我使用来自不同博客的不同代码并最后得到结果。那是我的代码部分上方。
  • 我非常想要你对我说的stackoverflow风格
猜你喜欢
  • 2013-02-14
  • 1970-01-01
  • 2011-04-06
  • 2012-09-25
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多