2017-01-24 6 views
6

Wie liest man alle Zeichenfolgen in einer aspx-Seite.Leseabfragezeichenfolge in asp.net ohne Angabe eines Seitennamens

Beispiel: http://foo.com/bike stehen

Ich mag/lesen, um die Saiten in einer bestimmten aspx-Seite. erwartet Seite String Fahrrad stehen
erwartet Seite ist getstring.aspx

Hier Ich mag die Zeichenfolge lesen und auf bestimmte Seite umleiten.
Hinweis: Ich mag diese ASP.Net in genau das tun (nicht mit MVC)

+0

Wollen Sie die Query-String-Parameter zu erhalten und zu, dass umleiten Seite basierend auf dem Parameter? –

+0

Erwartete Seite ist immer 'getstring.aspx'? –

+0

Ja AliBaig. basierend auf dem Abfrage-String leite ich ihn gerne auf eine andere Seite um. und getstring.aspx ist nur ein Beispiel für einen Seitennamen, der geändert werden kann. – Sensa

Antwort

2

Sie konnten die IIS URL Rewrite Module für diese. Nach der Installation können Sie im Knoten Web.Config System.Webserver eine Regel erstellen, die die URL so umschreibt, dass die Zeichenfolge im Code als QueryString verarbeitet werden kann.

<rewrite> 
    <rules> 
    <rule name="getString" stopProcessing="true"> 
     <match url="^([a-z0-9- /]+)$" ignoreCase="true"/> 
     <action type="Rewrite" url="getstring.aspx?string={R:1}"/> 
    </rule>  
    </rules> 
</rewrite> 

Dann können Sie einfach den String-Wert mit diesem erhalten:

string getString = Request.QueryString["string"]; 

Aber sein wird zu einem Problem führen, wenn es andere Seiten als getstring.aspx als Bedarf zugegriffen werden, da jede Anfrage jetzt senden wird zu getstring.aspx. Vielleicht ist es besser, ein Präfix zu verwenden, damit Sie die Anforderungs-URL als eine Adresse mit einer Zeichenfolge identifizieren können.

http://foo.com/getstring/bike stand 

<match url="^getstring/([a-z0-9- /]+)$" ignoreCase="true"/> 
4

Sie können dies wahrscheinlich mit einem Route lösen. Ich habe eine einfache Demo gemacht, die du in ein paar Minuten ausprobieren kannst. In der Global.asax.cs Datei, fügen Sie diese Methode:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("Products", 
     "Products/{product}", "~/getstring.aspx", 
     false, 
     new RouteValueDictionary { { "product", "NoneSelected" } } 
    ); 
} 

In der gleichen Datei, in der bereits vorhandenen void Application_Start(object sender, EventArgs e) Methode, fügen RegisterRoutes(RouteTable.Routes);:

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

Damit haben Sie ein Route konfiguriert, die eine nehmen Anfrage wie folgt:

http://foo.com/Products/bike%20stand 

und auf getstring.aspx abbilden. Beachten Sie, dass ich den URL in der URL per URL codiert habe.

In getstring.aspx können Sie den Wert zugreifen („Fahrradständer“) wie folgt aus:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string routeValue = ""; 
    if (RouteData.Values.ContainsKey("product")) 
     routeValue = RouteData.Values["product"].ToString(); 

    //routeValue now contains "bike stand" 

    SelectedProduct.Text = routeValue; 
} 

Ich habe die Route in diesem Beispiel auf den Pfad „Produkte“ unter dem Anwendungsordner einrichten. Ich empfehle nicht, dass Sie Ihre Route direkt unter dem Anwendungsordner wie in der Frage einrichten. Sie können es tun, obwohl, wenn Sie wollen unbedingt:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("Products", 
     "{product}", "~/getstring.aspx", 
     false, 
     new RouteValueDictionary { { "product", "NoneSelected" } } 
    ); 
} 
3

Es kann nicht der beste Weg, um Ihren Bedarf zu erfüllen, aber wenn Sie die Zeichenfolge Teil von URL erhalten möchten können Sie URI-Segmente verwenden.

HttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd‌​('/')).Skip(2).ToArr‌​ay(); 

ODER

new Uri("http://www.someurl.com/foo/xyz/index.htm#extra_text").Segments 

Ergebnisse: [ "/", "foo/", "xyz/", "index.html" ]

Nach Zeichenfolge Lesen Sie, was Sie wollen Umleitung etc wollen tun

Verwandte Themen