Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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
C# asp.net中的搜索引擎优化友好URl_C#_Asp.net_Url Rewriting_Seo - Fatal编程技术网

C# asp.net中的搜索引擎优化友好URl

C# asp.net中的搜索引擎优化友好URl,c#,asp.net,url-rewriting,seo,C#,Asp.net,Url Rewriting,Seo,我正在创建一个web应用程序。有一个默认页面,其中包含问题列表。当用户单击问题时,该问题将重定向到用户查看问题文件夹中的问题。在default.aspx页面,im使用datalist控件显示问题标题。在这里,我生成了这个问题的id为的url。对于此代码,请参见下文 protected void listQuestion_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType

我正在创建一个web应用程序。有一个默认页面,其中包含问题列表。当用户单击问题时,该问题将重定向到用户查看问题文件夹中的问题。在default.aspx页面,im使用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");
    }
和viewpage以获取查询字符串,如下所示:

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

我怎样才能使这个例子搜索引擎优化友好的网址。谢谢您的回答。

您的代码有两个地方似乎是错误的:

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

    Questions/ViewQuestion/{QuestionID}

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

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

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


    /Questions/ViewQuestion/numeric id/question description

    @nadeem如果你回顾一下,我使用了相同的方法。那么发生了什么?你有没有遇到过什么问题error@nadeem此部分我获取错误“lblQustionText.Text=this.Page.RouteData.Values[“QuestionID”].ToString()作为字符串;//给我对象引用异常'你能分享我需要做的代码吗。我第一次这样做我很困惑。我有谷歌它很多次我使用不同的代码从不同的博客和最后的结果。这是以上我的代码部分。我卑鄙地想要像stackoverflow风格,你对我说