web-dev-qa-db-ja.com

URLからパラメータを取得するにはどうすればよいですか

ユーザーがファイル名を確認してその名前のファイルを作成できるように、aspxを作成しています

uRLは

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

パラメータ「テキスト」を解析してテキストボックスに表示するにはどうすればよいですか?

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

aspxテキストボックスはこれです、私は試しました

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

しかし、それは機能しませんでした

誰かが私を助けることができますか?

10
bowang

Http getパラメータの値を取得するには:

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

次に、テキストボックステキストを設定します

Name.Text = testParameter

また、悪意のあるコンテンツがページに挿入される可能性があるため、URLからコンテンツを直接取得しないことを強くお勧めします。 ASPはこれからある程度の保護を提供しますが、それでも良い習慣と考えられています。

17
Th 00 mÄ s

クエリ文字列からテキスト値を取得する場合は、次を使用する必要があります。

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

次に、それをTextBoxNameのTextプロパティにバインドできます。

 Name.Text = text;

pdate:サーバーコントロールの値はPageLoadイベントでのみ初期化できます。

5

コードビハインドにアクセスできない場合(SharePointの一般的な制限)、JavaScriptの「ハック」を使用してテキストボックスにURL値を入力できます。

これを実現するには、次のコードを.aspxページの一番下にテキストボックスとともに配置します。

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

これはnotグッドプラクティスであり、ベストプラクティスソリューションを実行できない場合の回避策であることに注意してください。

0
Shadow

実は

string value = Name.Text;
0
Remy

RootFolderとTextの間のURLに&がないようですので、これに変更してください-

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

あなたを拘束するという点では、あなたはほとんど正しいです、これはそれをするべきです-

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

ただし、これを今実行すると、このようにPageLoadでDataBind()を呼び出す必要があるため、機能しません。

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

これはあなたが望むように行うべきですが、おそらくこのようにPageLoadで直接これを行う方が簡単です-

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