記入HTMLフォームの作成C#の送信

HTMLフォームは、ユーザーからの入力を取得するために頻繁に使用されます。チェックボックス、テキスト、ラジオ、および入力用の送信ボタンを含むさまざまなフォームフィールドに入力できます。 C#言語を使用して、プログラムでHTMLフォームを作成または入力できます。この記事では、HTMLフォームに関連する次のセクションについて説明します。

HTMLフォームの作成または入力-C#APIのインストール

Aspose.HTML for .NET APIを使用すると、C#言語を使用してプログラムで送信ボタンを使用してHTMLフォームを作成または入力できます。 ダウンロードセクションからDLLファイルをダウンロードしてAPIを構成するか、次のNuGetインストールコマンドを使用してAPIをすばやくインストールできます。

PM> Install-Package Aspose.Html

C#を使用してプログラムでHTMLフォームを作成する

C#言語を使用してプログラムでHTMLフォームを作成できます。ゼロから作成するには、以下の手順に従ってください。

  1. HTMLDocumentクラスのインスタンスを初期化します。
  2. CreateNewメソッドを使用して新しいHTMLフォームを作成します。
  3. 簡易テキストタイプフィールドを入力します。
  4. ラジオボタン入力要素を作成します。
  5. HTML形式で送信ボタンを入力し、現在のノードを追加します。
  6. HTMLフォームを保存します。

次のコードは、C#を使用してプログラムでHTMLフォームを作成する方法を示しています。

// HTMLDocumentクラスのインスタンスを初期化します
using (HTMLDocument document = new HTMLDocument())
{
    // CreateNew()メソッドを使用して新しいHTMLフォームを作成する
    using (var editor = FormEditor.CreateNew(document))
    {
        // 単純なテキストタイプフィールドを入力します
        var name = editor.AddInput("name");                    
        name.Type = InputElementType.Text;                    

        // ラジオボタンを入力します
        var size = editor.AddInput("size");
        size.Type = InputElementType.Radio;
        size.HtmlElement.InnerHTML = "Sample Text";

        // HTMLフォームで送信ボタンを入力
        var button = editor.Add<Forms.ButtonElement>("btn");
        button.Value = "submit";
        button.HtmlElement.InnerHTML = "Sample Button";

        // 現在のノードを追加します
        document.Body.AppendChild(editor.Form);
    }
    // HTMLフォームを保存
    document.Save("Create-HTML-Form.html");
}

さらに、以下は、C#でネイティブHTMLフォーム要素を使用してHTMLフォームを作成するための別のアプローチです。

// ネイティブHTMLAPIを使用してHTMLフォームを作成する
using (var document = new Aspose.Html.HTMLDocument())
{
    var editor = Aspose.Html.Forms.FormEditor.CreateNew(document);
    var body = document.Body;

    // フォーム要素を作成する
    var form = (HTMLFormElement)document.CreateElement("form");
//                form.Action = "action_page.php";

    // FirstNameラベルを作成する
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // FirstNameフィールドを作成する
    var input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "text";
    input.Id = "fname";
    input.Name = "fname";
    form.AppendChild(input);
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));

    // LastNameラベルを作成する
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // LastNameフィールドを作成
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "text";
    input.Id = "lname";
    input.Name = "lname";
    form.AppendChild(input);
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));               

    // RadioButtonフィールドを作成します
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio1";
    input.Name = "Topping";
    form.AppendChild(input);

    // RadioButtonラベルを作成する
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Male";
    label.For = "radio1";
    form.AppendChild(label);                
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));

    // RadioButtonフィールドを作成します
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio2";
    input.Name = "Topping";
    form.AppendChild(input);

    // RadioButtonラベルを作成する
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Female";
    label.For = "radio2";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));

    // [送信]ボタンを作成
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "submit";
    input.Value = "Submit";
    form.AppendChild(input);

    body.AppendChild(form);
    document.Save(dataDir + "Create-HTML-Form.html");
}

次のスクリーンショットは、上記のコードスニペットで作成された出力HTMLフォームを示しています。

HTMLフォームの作成送信Btn

C#で送信ボタンを使用してHTMLフォームに入力する

HTMLフォームを作成する方法についてはすでに説明しました。これで、HTMLフォームに入力し、C#アプリケーションから直接任意のリモートサーバーにデータを送信する方法を学ぶことができます。フォーム内のさまざまな項目を繰り返し処理してから、[送信]ボタンを使用してデータを送信できます。ここでは、httpbin.orgによって作成されたテンプレートフォームを使用します。これには、テキスト、ラジオボタン、および以下で学習しているチェックボックスへの入力が含まれます。

[入力タイプ]チェックボックスの値を選択します

チェックボックスは、複数のオプションを選択する必要がある場合に役立ちます。次のコードを使用して、[入力タイプの値]チェックボックスを簡単に選択できます。

elements = editor
.Where(x => x.ElementType == Forms.FormElementType.Input)
.Cast<Aspose.Html.Forms.InputElement>()
.Where(x => x.Type == Forms.InputElementType.Checkbox);

foreach (Forms.InputElement input in elements)
{
    // チェックボックスでタマネギとチーズの両方のオプションを選択します
    if (input.Value == "onion" || input.Value == "cheese")
    {
    	input.SetCheckboxValue(true);
    }
}

入力タイプのテキストとラジオフィールドに入力します

HTMLフォームには、データを収集するための複数のテキストボックスとラジオボタンフィールドが含まれる場合があります。入力テキストに次のコードを入力できます。

// 次のように、入力要素への直接アクセスを使用してデータを入力できます。
editor["custname"].Value = "Aspose";

// またはこれ:
var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
comments.Value = "Extra Ketchup PLEASE!";

// または、次のような一括操作を実行することによっても:
editor.Fill(new Dictionary<string, string>()
{
    {"custemail", "test@test.com"},
    {"custtel", "+123-456-789"}
});

同様に、以下のコードでラジオボタンフィールドを選択できます。

var elements = editor
.Where(x => x.ElementType == Forms.FormElementType.Input)
.Cast<Aspose.Html.Forms.InputElement>()
.Where(x => x.Type == Forms.InputElementType.Radio);

foreach (Forms.InputElement input in elements)
{
    // ラジオボタンでサイズとしてメディアを選択します
    if (input.Value == "medium")
    {
    	input.SetRadioValue(true);
    }
}

HTMLで送信ボタンを使用してデータを送信する

FormSubmitterクラスを使用して、[送信]ボタンで入力されたデータをHTMLフォームで送信できます。次のコードは、C#コードでSubmit()メソッドを呼び出す方法を示しています。

// フォーム送信者のインスタンスを作成します
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// フォームデータをリモートサーバーに送信します。
// 必要に応じて、オーバーロードメソッドを使用して、リクエストのユーザークレデンシャルやタイムアウトなどを指定できます。
var result = submitter.Submit();

ソースコード

以下は、C#を使用してプログラムでHTMLフォームに入力するための完全なソースコードです。

// 'https://httpbin.org/forms/post'URLからHTMLドキュメントのインスタンスを初期化します
using (var document = new HTMLDocument(@"https://httpbin.org/forms/post"))
{
    // フォームエディタのインスタンスを作成します
    using (var editor = FormEditor.Create(document, 0))
    {

        var elements = editor
        .Where(x => x.ElementType == Forms.FormElementType.Input)
        .Cast<Aspose.Html.Forms.InputElement>()
        .Where(x => x.Type == Forms.InputElementType.Radio);
        foreach (Forms.InputElement input in elements)
        {
            // ラジオボタンでサイズとしてメディアを選択します
            if (input.Value == "medium")
            {
                input.SetRadioValue(true);
            }
        }

        elements = editor
        .Where(x => x.ElementType == Forms.FormElementType.Input)
        .Cast<Aspose.Html.Forms.InputElement>()
        .Where(x => x.Type == Forms.InputElementType.Checkbox);

        foreach (Forms.InputElement input in elements)
        {
            // チェックボックスでタマネギとチーズの両方のオプションを選択します
            if (input.Value == "onion" || input.Value == "cheese")
            {
                input.SetCheckboxValue(true);
            }
        }

        // 次のように、入力要素への直接アクセスを使用してデータを入力できます。
        editor["custname"].Value = "Aspose";

        // またはこれ:
        var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
        comments.Value = "Extra Ketchup PLEASE!";

        // または、次のような一括操作を実行することによっても:
        editor.Fill(new Dictionary<string, string>()
        {
            {"custemail", "test@test.com"},
            {"custtel", "+123-456-789"}
        });

        // フォーム送信者のインスタンスを作成します
        using (var submitter = new Aspose.Html.Forms.FormSubmitter(editor))
        {
            // フォームデータをリモートサーバーに送信します。
            // 必要に応じて、リクエストのユーザークレデンシャルやタイムアウトなどを指定できます。
            var result = submitter.Submit();

            // 結果オブジェクトのステータスを確認します
            if (result.IsSuccess)
            {
                // 結果がjson形式であるかどうかを確認します
                if (result.ResponseMessage.Headers.ContentType.MediaType == "application/json")
                {
                    // 結果データをコンソールにダンプします
                    Console.WriteLine(result.Content.ReadAsString());
                }
                else
                {
                    // 結果データをHTMLドキュメントとしてロードします
                    using (var resultDocument = result.LoadDocument())
                    {
                        // ここでHTMLドキュメントを調べます。
                    }
                }

            }
        }
    }
}

無料のAPIライセンス

無料一時ライセンスをリクエストすることで、評価の制限なしにAspose.HTML for.NET APIを評価できます。

結論

結論として、HTMLフォームを最初から作成する方法と、既存のHTMLフォームに入力して、C#アプリケーションからリモートサーバーにデータを送信する方法を学びました。 ドキュメントセクションにアクセスして、他のいくつかの機能を調べることもできます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目