web-dev-qa-db-de.com

Wie bekomme ich die Parameter von URL

Ich schreibe ein ASPX, damit Benutzer den Dateinamen überprüfen und eine Datei mit diesem Namen erstellen können

die URL ist 

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

wie kann ich den Parameter 'Text' parsen und im Textfeld anzeigen?

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

das aspx-textfeld ist das, ich habe es versucht 

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

aber es hat nicht funktioniert

kann mir jemand helfen?

10
bowang

So erhalten Sie den Wert für den http-Get-Parameter:

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

legen Sie dann den Textfeldtext fest

Name.Text = testParameter

Es wird auch dringend empfohlen, Inhalte nicht direkt von der URL zu übernehmen, da schädlicher Inhalt auf diese Weise in Ihre Seite eingefügt werden könnte. ASP bietet hier einen gewissen Schutz, dennoch ist es eine gute Praxis.

16
Th 0 mÄ s

Wenn Sie einen Textwert von Querystring erhalten möchten, müssen Sie Folgendes verwenden:

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

Dann können Sie es an die Texteigenschaft von TextBox Name binden:

 Name.Text = text;

Update: Sie können die Serversteuerungswerte nur für das PageLoad-Ereignis initialisieren.

5

Wenn Sie keinen Zugriff auf den dahinterliegenden Code haben (allgemeine Einschränkung in SharePoint), können Sie mithilfe von "Hack" das Textfeld mit dem URL-Wert füllen.

Um dies zu erreichen, platzieren Sie diesen Code ganz unten auf der Seite .aspx mit dem Textfeld:

<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>

Beachten Sie, dass dies nicht gute Praxis ist, nur ein Weg, wenn Sie die Best Practice-Lösung nicht ausführen können.

0
Shadow Wizard

Eigentlich wäre es so

string value = Name.Text;
0
Remy

Anscheinend fehlt ein & in Ihrer URL zwischen RootFolder und Text. Ändern Sie es also in

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

In Bezug auf die Bindung sind Sie fast richtig, dies sollte es tun - 

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

Wenn Sie dies jedoch jetzt ausführen, funktioniert es nicht, da Sie DataBind () in Ihrem PageLoad so aufrufen müssen 

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

Dies sollte so sein, wie Sie möchten, obwohl es wahrscheinlich einfacher ist, dies direkt in Ihrem PageLoad wie folgt auszuführen -

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