2012-05-10 5 views
5

Quiero poder extraer el nombre de un subdirectorio de una URL y guardarlo en una cadena desde el lado del servidor en ASP.NET C#. Por ejemplo, digamos que tengo una URL que tiene este aspecto:Extraiga el nombre del subdirectorio de la URL en ASP.NET C#

http://www.example.com/directory1/directory2/default.aspx 

¿Cómo puedo obtener el valor 'directorio2' de la URL?

+1

Es posible que desee ser un poco más preciso: ¿Quieres el último subdirectorio antes de la página? es decir, si la URL era 'http: // www.abc.com/foo/bar/baz/default.aspx', ¿querrías' baz'? – Filburt

+0

Por favor, mira mi respuesta actualizada. – jams

Respuesta

12

clase Uri tiene una propiedad llamada segments:

var uri = new Uri("http://www.example.com/directory1/directory2/default.aspx"); 
Request.Url.Segments[2]; //Index of directory2 
+0

Me ganaste. :) –

+0

+1 es el mejor para evitar la división/análisis de cadenas cuando hay algo útil como Uri. OP no especificó si siempre quiso el último subdirector, tal vez podría incluir una alternativa para este caso. – Filburt

+0

¡Gracias! Esto funcionó a la perfección! – Kevin

0

Puede utilizar split método de string clase para dividirlo en /

Pruebe esto si usted quiere recoger página Guía

string words = "http://www.example.com/directory1/directory2/default.aspx"; 
string[] split = words.Split(new Char[] { '/'}); 
string myDir=split[split.Length-2]; // Result will be directory2 

Aquí es ejemplo de MSDN. Cómo usar el método split.

using System; 
public class SplitTest 
{ 
    public static void Main() 
    { 
    string words = "This is a list of words, with: a bit of punctuation" + 
          "\tand a tab character."; 
    string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' }); 
    foreach (string s in split) 
    { 
     if (s.Trim() != "") 
      Console.WriteLine(s); 
    } 
    } 
} 
// The example displays the following output to the console: 
//  This 
//  is 
//  a 
//  list 
//  of 
//  words 
//  with 
//  a 
//  bit 
//  of 
//  punctuation 
//  and 
//  a 
//  tab 
//  character 
1

que haría uso de .LastIndexOf ("/") y el trabajo hacia atrás a partir de eso.

1

Puede usar System.Uri para extraer los segmentos de la ruta. Por ejemplo:

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var uri = new System.Uri("http://www.example.com/directory1/directory2/default.aspx"); 
    } 
} 

entonces el "uri.Segments" la propiedad es una matriz de cadena (string []) que contiene 4 segmentos de esta manera: [ "/", "directory1 /", "directorio2 /", "default .aspx "].

1

Este es un código sorther:

string url = (new Uri(Request.Url,".")).OriginalString 
Cuestiones relacionadas