使用friendlyUrl重新路由查询字符串

时间:2015-03-04 13:13:49

标签: asp.net webforms friendly-url

我正在尝试在进行搜索时重写我的网址。但是我甚至无法从我的URL中获取这些片段,或者可能没有片段但是我不知道如何更改它。

我如何尝试在Find.aspx pageload中获取细分:

IList <string> segments = Request.GetFriendlyUrlSegments();
            for (int i = 0; i < segments.Count; i++)
            {
                Label1.Text += "- " + segments[i] + " -"; 
            }

这只是为了测试它是否找到1段,而不是。

我也试过在其中设置我的RouteConfig:

public static void RegisterRoutes(RouteCollection routes)
{
    var settings = new FriendlyUrlSettings();
    settings.AutoRedirectMode = RedirectMode.Permanent;
    routes.EnableFriendlyUrls(settings);

    routes.MapPageRoute("", "Find", "~/Find.aspx");
    routes.MapPageRoute("Find", "Find/{Result}", "~/Find.aspx");
}

我想更改此网址:

www.site.com/Find?Result=Test

对此:

www.site.com/Find/Test

www.site.com/Test

我“呼叫”此链接Response.redirect("~/Find.aspx?Result=" + searchString)

我也想知道Localhost:xxxxx/Default是否意味着当我最终购买域名时,我的首页会看起来像www.sitename.com/Default?如果是这样,我怎样才能将其重新路由为www.sitename.com

基本上只是想让我的网站更多SEO。

2 个答案:

答案 0 :(得分:1)

你需要在下面的行中发表评论,然后才能运作。

routes.MapPageRoute("", "Find", "~/Find.aspx");
routes.MapPageRoute("Find", "Find/{Result}", "~/Find.aspx");

更多信息 - Refer this

这些行的目的

  1. routes.MapPageRoute("", "FindXXX", "~/Find.aspx");是用FindXXX替换Find.aspx,此处FindXXX是SEO友好名称。并且它不会向Find.aspx发送任何参数。
  2. 用法 - 它为Find.aspx提供了SEO友好名称。要使用此功能,您需要点击网址 - http://localhost:63197/FindXXX

    1. routes.MapPageRoute("Find", "FindMore/{Result}", "~/Find.aspx"); - 此行添加SEO友好+提供了将参数传递给SEO友好URL的方法。
    2. 用法 - 网址 - http://localhost:63197/FindMore/abc。要获得价值 - 您需要使用以下 - Page.RouteData.Values["Result"]

      为什么它不起作用 - 在你的情况下,两行都有SEO友好名称为Find,这使路由引擎混乱,然后失败。

      如何工作

      以下是网址,我试过了。 enter image description here

      以下是输出

      enter image description here

      我评论过以下内容。

      enter image description here

答案 1 :(得分:0)

首先你需要mapPage Url赞这个

Routes.MapPageRoute("RouteName", "User/Friendly/Page/Address", "~/OriginalPageAdress.aspx")


Routes.MatPageRoute("Find", "Find/{result}/", "~/Find.aspx")
 (/) Character must be place in the last of firendlyUrl b'coz if you enter some text with the space(s) then friendlyUrl will not work Properly.


Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click

    //Response.RedirectToRoutePermanent("Search", New With {.paramName = "paramValue", ...})
    Response.RedirectToRoutePermanent("Find", New With {.result = "Search Value"})

End Sub

访问&#34;搜索价值&#34;在&#34;〜/ Find.aspx&#34;中输入以下代码页面:

Dim SearchValue as String = Page.RouteData.Values("result")

Response.Write(String.Format("Result For : {0}"), SearchValue)

对于UrlSegments

dim Segm = Request.Urls.Segments(0)