Маршрутизация веб-форм ASP.NET 4.0 на главной странице - PullRequest
1 голос
/ 01 сентября 2011

Я просто хочу спросить, есть ли обходной путь в маршрутизации URL с использованием masterpage. Я помещаю ссылки на мою главную страницу (т.е. первая ссылка - это href = "Bookstore / CSS", а другая ссылка - это href = "tools / toolx"), если я нажимаю первую ссылку, она перенаправляет меня на правильный URL-адрес localhost : 2039 / Книжный магазин / но если я нажму следующую ссылку, он перенаправит меня на localhost: 2039 / tools / Bookstore / CSS, но ссылка должна быть локальной: 2039 / Книжный магазин / CSS.

Вот код

global.asax

void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteTable.Routes.MapPageRoute("StoreRoute",
        "BookStore/{Name}",
        "~/Webpages/BookStore/ViewBookDemo.aspx");

        RouteTable.Routes.MapPageRoute("mytool",
        "tools/{Name}",
        "~/tools/tools.aspx");
    }

исходный код главной страницы

<div class="page">
    <div >
        <div class="title">
            <h1>
                URL Routing in MAsterpage
            </h1>
        </div>
        <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                </Items>
            </asp:Menu>
        </div>
    </div>
   <div class="clear"> </div>
   <div style=" width:90%">
  <div style="float:left; width:25%;border: 1px solid #009933;"> 
  <br />
    <a href="Bookstore/CSS">Click Here to go to bookstore</a>.
   <div class="clear"> </div>
   <p>
      <a href="tools/toolx">Click Here to go to tools</a>.
  </p> </div>
   <div style="float:right;width:73%">
   <div class="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
    </div>
   </div>
  </div>
  </div>
     <div class="clear"> </div>
<div class="footer">

</div>

1 Ответ

0 голосов
/ 03 мая 2012

В событии щелчка по пункту меню попытайтесь получить элемент, по которому щелкнули, и затем используйте метод response.RedirectToRoute. Он запрашивает новый URL-адрес, используя имя маршрута, которое вы указали на странице global.asax. Пример кода: -

protected void NavigationMenu_MenuItemClick(object sender, MenuEventArgs e)

    {
        MenuItem item = e.Item;
        if (item.Text == "Categories")
        {
            Response.RedirectToRoute("View Category");
        }
    }

Маршрутизация URL для " Просмотреть категорию ", упомянутая на глобальной странице, равна

  public void RegisterRoutes(RouteCollection route)
    {
        route.MapPageRoute("View Category", "Categories/All", "~/Views/Categories.aspx");
    }


   void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RegisterRoutes(RouteTable.Routes);

    }
...