16

私はいくつかのレガシーコードをリファクタリングしています。アプリはクエリ文字列を使用していませんでした。以前の開発者は、アプリが他の場所で使用するいくつかの変数をハード コーディングしていました。

VB.NETを使用してこのように

 so.Cpage = "ContractChange.aspx"

私の質問は、プログラムでこの値を設定し、現在のクエリ文字列を含めることはできますか?

so.CpageのようなものになりたいContractChange.aspx?d=1&b=2

リクエストオブジェクトなどでこれを行うことはできますか? ドメインは必要ありません。

4

5 に答える 5

26

現在のクエリ文字列を取得するには、次のようにします。

Dim query as String = Request.QueryString("d")

これにより、「d」クエリ文字列の値が文字列変数「query」に割り当てられます。すべてのクエリ文字列値は文字列であるため、数値を渡す場合は、それらの文字列値を「キャスト」または数値に変換する必要があります(ただし、キャストするときは例外に注意してください)。例えば:

Dim query as String = Request.QueryString("d")
Dim iquery as Integer = CType(query, Integer)

RequestオブジェクトのQueryStringプロパティは、名前と値のキーのペアのコレクションです。具体的には、タイプはSystem.Collections.Specialized.NameValueCollectionであり、次のように名前と値の各ペアを反復処理できます。

Dim coll As System.Collections.Specialized.NameValueCollection = Request.QueryString
Dim value As String
For Each key As String In coll.AllKeys
   value = coll(key)
Next

これらのメカニズムのいずれか(または非常に類似したもの)を使用すると、移動先の完全なURL(ページとクエリ文字列)を含む文字列変数を作成できるようになります。

于 2009-07-07T15:27:54.917 に答える
9

これを試して:

so.Cpage = "ContractChange.aspx?" & Request.RawUrl.Split("?")(1)
于 2009-07-07T15:08:37.740 に答える
8

VB.Net では、次のように実行できます。

Dim id As String = Request.Params("RequestId")

これを整数として処理する場合は、次のようにします。

Dim id As Integer

If Integer.TryParse(Request.Params("RequestId"), id) Then
   DoProcessingStuff()
End If
于 2009-07-07T15:11:31.590 に答える
1

これを試して

Dim name As String = System.IO.Path.GetFileName(Request.ServerVariables("SCRIPT_NAME"))
Dim qrystring As String = Request.ServerVariables("QUERY_STRING")
Dim fullname As String = name & "/" & qrystring
于 2012-10-10T16:50:04.297 に答える
0

の構文についてはわかりませんVB.NETが、C#実行する必要があるだけです

StringId = Request.QueryString.Get("d");

お役に立てれば。

于 2009-07-07T15:09:03.327 に答える