質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

2783閲覧

URLのクエリ文字列に使っている定数("?","&")が.NET Frameworkに定義されていれば知りたい

ww155

総合スコア32

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2019/05/13 05:21

前提・実現したいこと

C#でパラメータ付きのURLを自動生成するクラスを作っています。
その際、クエリ文字列で使う"?"や"&"をクラス内で定数化して持たせているのですが、わざわざ自分で定義するのは野暮ったい気がしています。
.NET Frameworkのどこかにこの定数がないか探してみましたが見つかりません。(string.NewLineみたいな定義済の定数)
どこかにあるなら教えていただきたいです。なければ諦めます…

該当のソースコード

C#

1/// <summary>クエリ文字列定数 - 区切り</summary> 2private const string URL_PARAMETER_SEPARATOR = "&"; 3/// <summary>クエリ文字列定数 - 冒頭</summary> 4private const string URL_PARAMETER_HEAD = "?";

↑これをなくしてしまいたい&利用部分ではライブラリ内の定数を読み出したい

補足情報(FW/ツールのバージョンなど)

ASP.NET / C#での開発です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

研修でこういうクラス作ってみてね、

研修であれば講師に聞くのが筋と思いますよ。

そもそも、一文字 '?' とか '&' とかタイプすれば済むとことろを、たとえインテリセンスが効いたとしても URL_PARAMETER_SEPARATOR とか URL_PARAMETER_HEAD とタイプするのに何の意味があるのでしょう? コードが読み難くなるし。

何故そんなことをするのか講師の方に聞いて教えていただきたいくらいですが、とりあえず、それはちょっと置いといて・・・

どこかにあるなら教えていただきたいです。なければ諦めます…

100% 絶対にない・・・とまで言い切る自信はないですが、少なくとも自分が知る限り無いです。

特に '&' の使い分けが問題です。

例えば、html ソースに書く場合(a 要素の href 属性、img 要素の src 属性)と Response.Redirect の引数に設定する場合、前者には & を HTML Encode した & を、後者には直接 & を使うと思います。前者に & を使ってもセキュリティの問題はないとしても W3C Markup Validaton は通りません。

セキュリティとか W3C は気にしないことにして、全て & を使うことにするにしても、param2=xxx&yyy というようなクエリ文字列の場合は & は使えません。

例えば、param1=aaa と param2=xxx&yyy というクエリ文字列を URL に設定する場合、a 要素の href 属性、img 要素の src 属性、Response.Redirect の引数でそれぞれ:

<a href="/contact.aspx?param1=aaa&amp;param2=xxx%26yyy">Ccontact.aspx</a> <img src="/0029-ImageHandler.ashx?param1=aaa&amp;param2=xxx%26yyy" /> Response.Redirect("~/contact.aspx?param1=aaa&param2=xxx%26yyy");

となります。URL_PARAMETER_SEPARATOR とかを定義しても対応できないはず。

使う場所によって自動的に & か & か %26 のどれを使うかを判別して適切な設定してくれるクラス/プロパティなどを自作すれば話は別かもしれませんが、そこまでやる気はないということなら、諦めるという結論になるのでは?

投稿2019/05/14 02:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ww155

2019/05/15 05:47

丁寧な回答ありがとうございました。確かになさそうだったので諦めます… &の使い分けについては、HTMLページに吐くような場合には利用側でHTMLエンコードをするため、このクラスでの分岐処理などは不要、という認識です。
退会済みユーザー

退会済みユーザー

2019/05/15 06:29

上の回答の例で書きました param2=xxx&yyy ⇒ param2=xxx%26yyy は HTML エンコードではなくパーセントエンコーディングですのでご注意ください。
guest

0

UriBuilder Class を使って Uri を組み立て、Uri Class で分解してください。

投稿2019/05/13 05:23

編集2019/05/13 05:25
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ww155

2019/05/13 09:24

研修でこういうクラス作ってみてね、というものなので他クラスの利用はできません。 "&"や、"?"がどこかで定義されていればそれを使いたい、という話になります…
ww155

2019/05/15 05:49

なさそうですね… 皆様ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問