創建填寫 HTML 表單提交 C#

HTML 表單經常用於獲取用戶的輸入。您可以填寫包含複選框、文本、單選框和提交按鈕的不同表單字段以供輸入。您可以使用 C# 語言以編程方式創建或填寫 HTML 表單。本文涵蓋以下與 HTML 表單相關的部分:

創建或填寫 HTML 表單 - C# API 安裝

Aspose.HTML for .NET API 允許您使用 C# 語言以編程方式創建或填充帶有提交按鈕的 HTML 表單。您可以通過從 下載 部分下載 DLL 文件來配置 API,或者使用以下 NuGet 安裝命令快速安裝它:

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 表單的方法:

// 使用本機 HTML API 創建 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";

    // 創建名字標籤
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // 創建名字字段
    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"));

    // 創建姓氏標籤
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // 創建姓氏字段
    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"));               

    // 創建單選按鈕字段
    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"));

    // 創建單選按鈕字段
    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# 應用程序發送到遠程服務器。您還可以訪問 文檔 部分來探索其他幾個功能。如有任何疑問,請隨時通過 免費支持論壇 與我們聯繫。

也可以看看