web-dev-qa-db-fra.com

Comment puis-je obtenir les paramètres de l'URL

J'écris un aspx pour permettre aux utilisateurs de vérifier le nom du fichier et de créer un fichier portant ce nom.

l'URL est 

/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-
                             284607DA03C6%7d&RootFolder=%3bText=%27SD_RMDS%27

comment puis-je analyser le paramètre 'Texte' et l'afficher dans la zone de texte?

<div>
    <asp:TextBox id="Name" runat="server" />
</div>

la zone de texte aspx est-ce, j'ai essayé 

<asp:TextBox id="Name" runat="server" text=<%$Request.QueryString['Text']%>></asp:TextBox>>

mais ça n'a pas marché

n'importe qui peut m'aider?

10
bowang

Pour obtenir la valeur pour le paramètre http get:

string testParameter = Request.QueryString["Text"];

puis définissez le texte de la zone de texte

Name.Text = testParameter

Il est également fortement recommandé de ne pas extraire le contenu directement de l'URL, car un contenu malveillant pourrait être injecté de cette manière dans votre page. ASP offre une certaine protection contre cela, toujours considéré comme une bonne pratique.

16
Th 0 mÄ s

Si vous voulez obtenir une valeur textuelle de Querystring, vous devez utiliser:

var text = (string)Request.QueryString["Text"];

Ensuite, vous pouvez le lier à la propriété Text de TextBox Name:

 Name.Text = text;

Mise à jour: Vous pouvez initialiser vos valeurs de contrôles serveur uniquement sur l'événement PageLoad.

5
Kirill Bestemyanov

Si vous n'avez pas accès au code derrière (limitation commune dans SharePoint), vous pouvez utiliser "pirater" JavaScript pour remplir la zone de texte avec la valeur de l'URL.

Pour ce faire, placez ce code au bas de la page .aspx avec la zone de texte:

<script type="text/javascript">
    var strTextBoxId = "<%=Name.ClientID%>";
    var oTextBox = document.getElementById(strTextBoxId);
    if (oTextBox) {
        oTextBox.value = "<%=Request.QueryString["Text"].Replace("\"", "\\\"")%>";
    }
    else {
        //debug
        alert("element with ID '" + strTextBoxId + "' does not exist");
    }
</script>

Notez que ceci est pas une bonne pratique, juste un moyen de contourner le problème lorsque vous ne pouvez pas faire la meilleure solution.

0
Shadow Wizard

En fait, ce serait

string value = Name.Text;
0
Remy

Il semble qu'il manque un & dans votre URL entre RootFolder et Text alors changez le en ceci -

/sites/usitp/_layouts/CreateWebPage.aspx?List=%7b74AB081E-59FB-45A5-876D-284607DA03C6%7d&amp;RootFolder=%3b&Text=%27SD_RMDS%27

En termes de liaison, vous avez presque raison, cela devrait le faire - 

<asp:TextBox id="Name" runat="server" text='<%#Request.QueryString["Text"]%>'></asp:TextBox>

Cependant, si vous exécutez ceci maintenant, cela ne fonctionnera pas car vous devrez appeler DataBind () dans votre PageLoad comme ceci 

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

Cela devrait faire ce que vous voulez, même s'il est probablement plus facile de le faire directement dans votre PageLoad comme ceci -

Name.Text = Request.QueryString["Text"];
0
Kevin Main