创建填写 HTML 表单提交 C#

HTML 表单经常用于获取用户的输入。您可以填写包含复选框、文本、单选和提交按钮的不同表单字段以供输入。您可以使用 C# 语言以编程方式创建或填写 HTML 表单。本文涵盖以下与 HTML 表单相关的部分:

创建或填写 HTML 表单 - C# API 安装

Aspose.HTML for .NET API 允许您使用 C# 语言以编程方式创建或填充带有提交按钮的 HTML 表单。您可以通过从 Downloads 部分下载 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"));               

    // 创建 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 表单提交按钮

在 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# 应用程序发送到远程服务器。您还可以访问 文档 部分以探索其他几个功能。如有任何疑问,请随时通过 免费支持论坛 与我们联系。

也可以看看