2011-10-06 3 views
1

J'ai un site Web construit en ASP.NET 4.0 et actuellement j'ai une liste déroulante avec des URLs, un bouton qui va à cette URL et analyse le texte et enfin une boîte de résultats avec le texte analysé. Ce que je veux faire est d'aller sur mon site Web et de choisir l'URL dans la liste déroulante, je veux passer le paramètre comme une URL complète et avoir le bouton aller à cela et ensuite faire son truc. Un peu comme un lien permanent que je peux remettre à un utilisateurParamètre facultatif dans ASP.net 4.0 C#

Par exemple:

http://localhost:62554/WebSite5/Default.aspx ->http://google.com

google.com obtient mis dans une variable (permet de dire son MyURL) et le bouton le prend comme s'il était dans la boîte déroulante. ** Code Mise à jour: maintenant obtenir une erreur 500 à

using (StreamReader objReader = new StreamReader(objRequest.GetResponse().GetResponseStream())) 

string newURL; 
String url; 

protected void Page_Load(object sender, EventArgs e) 
{ 

    //Request.Params.Get("newURL").ToString(); 
    //string url = Request["newURL"]; 
    //url = Request.QueryString["newURL"].ToString(); 
    url = Request.QueryString["newURL"].ToString(); 

    parseButton_Click(sender, e); 
} 
protected void parseButton_Click(object sender, EventArgs e) 
{ 

    //MyURL = deviceCombo.Text; 
    //MyURL = Request.Params.Get(""); 
    //MyURL = Request.Params.Get("newURL"); 
    //MyURL = newURL; 
    //string MyURL = Request.Params["newURL"].ToString(); 

    WebRequest objRequest = HttpWebRequest.Create(url); 
    objRequest.Credentials = CredentialCache.DefaultCredentials; 
    using (StreamReader objReader = new StreamReader(objRequest.GetResponse().GetResponseStream())) 
    { 
     originalText.Text = objReader.ReadToEnd(); 
    } 

    //Read all lines of file 
    String[] crString = { "<BR>&nbsp;" }; 
    String[] aLines = originalText.Text.Split(crString, StringSplitOptions.RemoveEmptyEntries); 
    String noHtml = String.Empty; 

    for (int x = 0; x < aLines.Length; x++) 
    { 
     if (aLines[x].Contains(filterCombo.SelectedValue)) 
     { 
      noHtml += (RemoveHTML(aLines[x]) + "\r\n"); 

     } 
    } 

    //Print results to textbox 
    resultsBox.Text = String.Join(Environment.NewLine, noHtml); 
} 

Toutes les idées? Merci

+3

Quoi? (15 caractères) – Greg

+0

Un peu comme un lien permanent que je peux transmettre à un utilisateur au lieu d'aller sur mon site Web et de cliquer sur la liste déroulante et de sélectionner l'URL correcte à analyser. – KPS

+0

Une note: Ne jamais tester quoi que ce soit contre google. D'abord, ce n'est pas gentil. Deuxièmement, et plus important encore, selon la quantité de tests que vous faites, google peut décider de vous bloquer. Je l'ai vu arriver. – NotMe

Répondre

1

Vous pouvez obtenir la variable URL de l'objet de demande.

string url = Request["newURL"]; 

Mettre ce où vous aimez tels que Page_Load

protected void Page_Load(object sender, EventArgs e) 
{ 
    string url = Request["newURL"]; 
} 
+0

Cela ne fonctionne toujours pas pour moi – KPS

+0

Pouvez-vous poster plus de votre code et l'URL que vous passez? Cela ne devrait pas poser de problème, le problème doit être ailleurs. – Kirk

+0

J'ai mis à jour la question originale avec mon code, je reçois l'URL mais elle se bloque à 'using (StreamReader objReader = new StreamReader (objRequest.GetResponse(). GetResponseStream())) ' – KPS

3

Votre question était difficile à comprendre, mais je pense que ce que vous essayez de faire est de transmettre la chaîne du site Web dans l'URL. Je pense que ce que vous voulez faire est d'utiliser des paramètres d'URL, donc s'ils vont sur "http: // localhost: 62554/Website5/default.aspx? NewURL = http: //google.com", ils agissent comme s'ils avaient choisi google .com dans la liste déroulante.

Quelque chose après le? dans l'URL est traitée comme une URL param, vous pouvez accéder à ces params dans le codebehind comme ceci:

string newURL = Request.Params.Get("newURL"); 
+0

Oui c'est exactement ce que je veux faire mais où dois-je mettre ce code? – KPS

+0

Mettez ce code dans la section page_load de votre codebehind, assurez-vous de l'insérer dans if (! IsPostBack) afin que cela ne se produise que la première fois qu'ils ont frappé la page. – Porco

+0

J'ai essayé cela mais il revient comme NULL – KPS

Questions connexes