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 表单。请按照以下步骤从头开始创建它:
- 初始化 HTMLDocument 类的一个实例。
- 使用 CreateNew 方法创建新的 HTML 表单。
- 输入简单文本类型字段。
- 创建一个单选按钮输入元素。
- 在 HTML 表单中输入提交按钮并添加当前节点。
- 保存 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 表单:
在 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# 应用程序发送到远程服务器。您还可以访问 文档 部分以探索其他几个功能。如有任何疑问,请随时通过 免费支持论坛 与我们联系。