Получить параметры из дружественных URL - PullRequest
0 голосов
/ 01 июля 2019

У меня есть несколько URL-адресов, которые затем становятся дружественными, используя Webforms / Umbraco, но не MVC, т.е.

www.mysite.com / р = 1 & с = 2 & г = 3

до

www.mysite.com / 1/2/3 / ProductName

Проблема, с которой я сталкиваюсь после добавления дружественного URL-адреса в UrlRewriting.config, заключается в том, что при использовании дружественного URL-адреса параметры объединяются, т. Е. 1/2/3, поэтому при использовании

string pid = Server.HtmlDecode(Request.QueryString["p"]);

Я получаю значение, возвращающееся как 1/2/3. Я использую HTMLDecode, так как значение изначально закодировано (т.е. косая черта закодирована).

Я знаю, что могу поместить их в массив / список и получить соответствующее значение, но мне интересно, есть ли лучший способ или предпочтительный способ, которым я должен делать это в первую очередь?

1 Ответ

0 голосов
/ 01 июля 2019

Формат www.mysite.com/ProductName/1/2/3/ используется с маршрутами (обычно с веб-API).

Но вам нужно использовать RegisterRoutes(RouteCollection routes в Global.asax.cs файле.

маленький пример

        void RegisterRoutes(RouteCollection routes)
        {
            //Example: https://my.syte.com/updatedns/qft
            routes.MapPageRoute("updateDNS", "public/updateDNS/{hostname}",
                "~/pages/public/updateDNS.aspx"
                , false
                );
        }

Как добавить Global.asax

  • Щелкните правой кнопкой мыши свой веб-сайт -> Добавить новый элемент -> Класс глобального приложения -> Добавить

Вам необходимо добавить класс

  • Щелкните правой кнопкой мыши App_Code -> Добавить новый элемент -> Класс -> назовите его Global.cs -> Добавить

В Global.asax

<%@ Application Language="C#" Inherits="Global" %>

В Global.asax.cs (для вашего случая)

public class Global : System.Web.HttpApplication
{

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

    }

    /// Many other events like begin request...e.t.c

    void RegisterRoutes(RouteCollection routes)
    {
        //Example: https://my.syte.com/updatedns/qft
        routes.MapPageRoute("updateDNS", "public/updateDNS/{hostname}",
                "~/pages/public/updateDNS.aspx"
                , false
            );
    }
}
...