проблема маршрутизации asp.net - PullRequest
0 голосов
/ 02 января 2011

моя реализация маршрута на Global.asax

 protected void Application_Start(object sender, EventArgs e)
        {
            this.intRoutes(RouteTable.Routes);
        }

void intRoutes(RouteCollection Rts)
        {
            Rts.MapPageRoute("search", "{language}/{page}", "~/search.aspx");
            Rts.MapPageRoute("category", "{language}/{name}/{no}/{categoryname}", "~/category.aspx");
            Rts.MapPageRoute("product", "{language}/{name}/{no}/{productname}", "~/product.aspx");
        }

проблема в том,если я использую product маршрутизацию по гиперссылке, как показано ниже:

<asp:HyperLink ID="hyProduct" 
        NavigateUrl='<%#HttpUtility.UrlDecode(((Page)HttpContext.Current.Handler).GetRouteUrl("product", new{ language=getUIFromHelper(),name=getNameFromHelper(),no=Eval("code"),productname=getProductNameFromHelper(Eval("name"))})) %>' runat="server" Text="something" />

все идет хорошо, ссылка записывается, как ожидается, как

/en/products/06.008.001.150.0510/davis-fish-seeker-green

, но когдая щелкаю по этой ссылке, на странице category.aspx вместо продукта product.aspx.

я что-то упускаю?

Ответы [ 2 ]

1 голос
/ 02 января 2011

Да, как маршрутизатор может сказать, какой вы хотите?У них обоих есть четыре заполнителя без фиксированных каталогов.Невозможно определить, какой из них был предназначен.

Вам нужно будет сделать что-то вроде добавления фиксированного каталога, чтобы можно было различить два:

Rts.MapPageRoute(..., "{language}/Category/{no}/{categoryname}", ...
Rts.MapPageRoute(..., "{language}/Product/{no}/{productname}", ...
0 голосов
/ 02 января 2011

Я добавил дополнительные виртуальные папки, как категории, так и маршруты продуктов: / c / и / p /

void intRoutes(RouteCollection Rts)
        {
            Rts.MapPageRoute("search", "{language}/{page}", "~/search.aspx");
            Rts.MapPageRoute("category", "{language}/c/{name}/{no}/{categoryname}", "~/category.aspx");
            Rts.MapPageRoute("product", "{language}/p/{name}/{no}/{productname}", "~/product.aspx");
        }

и теперь маршрутизатор может определить, какой из них нужен ..

...