3

だから、私はC#の完全な初心者です。urlencoded 投稿を使用するためにエンコードする必要がある URL があります。

問題は、私が見つけたすべてのリソースが System.Web.HttpServerUtility.UrlEncode を使用するように言っていることです。または、System.Web.Util.HttpEncoder() を使用するように指示するリソースを見たことがあります。

system.web への参照を追加しましたが、「system.web 名前空間に存在しません」および「system.web.util 名前空間に存在しません」というエラーが発生します。

どんなヒントでもいいです!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Web;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string url = HttpUtility.UrlEncode("http://stackoverflow.com/");
            MessageBox.Show(url);
        }
     }
}
4

3 に答える 3

6

Chances are you're using the .NET 4 Client Profile, which doesn't include System.Web.dll - or you just haven't added a reference to it. If you go into the project properties, under "Application" select ".NET Framework 4" as the target framework, rather than ".NET Framework 4 Client Profile". You should then be able to add a reference to the System.Web assembly.

(Note that an assembly is not the same as a namespace. Assembly references are added to a project, whereas you typically "add" namespaces to an individual file with using directives at the top. You've already got the using directive for the System.Web namespace, but that won't help you use HttpServerUtility without a reference to the System.Web assembly.)

Alternatively, depending on your exact requirements, you could use Uri.EscapeDataString or Uri.EscapeUriString. Both of these are available in the client profile. It's slightly annoying that there are so many different ways of doing this - it can be tricky to pick the right one :(

于 2010-09-28T18:17:35.053 に答える
5

You might need to add reference to the System.Web assembly to your project:

alt text

于 2010-09-28T18:17:27.817 に答える
1

System.Web.dll への参照を追加していないと思います。

参照と名前空間のインポートは別のものです。名前空間は、関連するクラスをグループ化する方法であるため、コレクションに関連するすべてのクラスは System.Collections に存在し、すべての Windows フォームのものは System.Windows.Forms にあり、プロジェクトを整理してビジネス ロジック、プレゼンテーション、およびデータを分離することもできます。異なる名前空間でアクセスします。

ただし、名前空間は純粋に論理的です。クラスを同じ名前空間に追加する複数のライブラリを構築でき、1 つのプロジェクトで複数の名前空間を使用することもできます。

ここでは、usingステートメントを使用してSystem.Web 名前空間をインポートしました。

using System.Web;

これは、完全な名前System.Web.HttpUtility でクラスにアクセスする代わりに、HttpUtility だけを記述できることを意味するだけであり、コンパイラは System.Web を意味すると推測します。

ただし、Windows アプリケーションの場合、System.Web.dll と呼ばれるライブラリ自体は既定では参照されません。これは、現時点では System.Web クラスのどれもコンパイラに認識されていないことを意味します。

物理ライブラリ ファイルへの参照を追加するには、プロジェクトの [参照] フォルダーを右クリックし、[参照の追加... ] を選択してSystem.Web.dllを選択します。

繰り返しになりますが、名前空間は単なる論理グループであり、アセンブリはハード ドライブ上の物理ファイルです。

がんばれ、ダン

于 2010-09-28T18:25:08.800 に答える