ASP.NET маршрутизация с веб-формами - PullRequest
12 голосов
/ 06 октября 2008

Я прочитал Маршрутизация ASP.NET… Прощай, перезапись URL? и Использование маршрутизации с WebForms , которые являются отличными статьями, но ограничены простым, иллюстративным, "привет миром" примеры сложности.

Кто-нибудь использует нетривиальную маршрутизацию ASP.NET с веб-формами? Любые ошибки, которые нужно знать? Проблемы с производительностью? Дальнейшее рекомендуемое чтение, на которое я должен взглянуть, прежде чем приступить к собственной реализации?

EDIT Нашли эти дополнительные полезные URL:

Ответы [ 6 ]

3 голосов
/ 26 марта 2011
3 голосов
/ 06 октября 2008

Не уверен, что это ваш ответ, но это может привести вас в правильном направлении. Скотт Хансельман (MSFT) показывает, как получить ASP.NET WebForms, ASP.NET MVC и ASP.NET Dynamic Data - о и AJAX для работать вместе в гармонии.

http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx

2 голосов
/ 21 ноября 2017

Простой пример использования маршрутизации в ASP.NET

  1. Создать пустое веб-приложение
  2. Добавить первую форму - Default.aspx
  3. Добавить вторую форму - Second.aspx
  4. Добавить третью форму - Third.aspx
  5. Добавить в default.aspx 3 кнопки -

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Second.aspx");
    }
    
    protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Redirect("Third.aspx?Name=Pants");
    }
    
    protected void Button3_Click(object sender, EventArgs e)
    {
        Response.Redirect("Third.aspx?Name=Shoes");
    }
    
  6. Чтение строки запроса на третьей странице

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Request.QueryString["Name"]);
    }
    

Теперь, если вы запустите программу, вы сможете перейти ко второй и третьей форме. Так было раньше. Давайте добавим маршрутизацию.

  1. Добавить новый предмет - Global.aspx использование System.Web.Routing;

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }
    void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute(
            "HomeRoute",
            "Home",
            "~/Default.aspx"
        );
        routes.MapPageRoute(
            "SecondRoute",
            "Second",
            "~/Second.aspx"
        );
        routes.MapPageRoute(
            "ThirdRoute",
            "Third/{Name}",
            "~/Third.aspx"
        );
    }
    
  2. В default.aspx изменить защищенный void Button1_Click (отправитель объекта, EventArgs e) { // Response.Redirect ("Second.aspx"); Response.Redirect (GetRouteUrl ("SecondRoute", null)); }

    protected void Button2_Click(object sender, EventArgs e)
    {
        //Response.Redirect("Third.aspx?Name=Pants");
       Response.Redirect(GetRouteUrl("ThirdRoute", new {Name = "Pants"}));
    }
    
    protected void Button3_Click(object sender, EventArgs e)
    {
       // Response.Redirect("Third.aspx?Name=Shoes");
        Response.Redirect(GetRouteUrl("ThirdRoute", new { Name = "Shoes" }));
    }
    
  3. Изменить загрузку страницы в Third.aspx

    protected void Page_Load(object sender, EventArgs e)
    {
        //Response.Write(Request.QueryString["Name"]);
        Response.Write(RouteData.Values["Name"]);
    }
    

Запустите программу. Обратите внимание, что URL выглядит намного чище - в нем нет расширений (Second.aspx становится просто Second)

  1. Для передачи более одного аргумента

    • добавить новую кнопку в default.aspx со следующим кодом:

      protected void Button4_Click(object sender, EventArgs e)
      {
          Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"}));
      }
      
    • добавить следующий код в global.asax

          routes.MapPageRoute(
            "FourthRoute",
            "Fourth/{Name}-{Gender}",
            "~/Fourth.aspx"
        );
      
    • создать страницу Fourth.aspx со следующей загрузкой страницы:

      protected void Page_Load(object sender, EventArgs e)
      {
      Response.Write("Name is: " + RouteData.Values["Name"] + " and Gender is " + RouteData.Values["Gender"]);
      }
      
1 голос
/ 14 октября 2008

Я видел этот подкаст, связанный с блогом Скотту на днях, который может быть полезен для вас

http://morewally.com/cs/blogs/wallym/archive/2008/10/08/asp-net-podcast-show-125-routing-with-webforms.aspx

0 голосов
/ 07 октября 2013

Вы можете найти маршрутизацию URL, объясненную простым способом в следующих статьях. Он предоставляет такую ​​информацию, как отправка запроса по маршруту, получение параметров URL на целевой странице, установка значений параметров по умолчанию.

Маршрутизация URL в части веб-форм ASP.Net - 1

Маршрутизация URL в части веб-форм ASP.Net - 2

0 голосов
/ 22 января 2009

Пошаговое руководство Майка Ормонда по настройке маршрутизации URL-адресов в ASP.NET превосходно ( Настройка маршрутизации и запуска ASP.NET - полное руководство )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...