Tạo Mẫu HTML Điền vào Gửi C#

Biểu mẫu HTML thường được sử dụng để lấy đầu vào từ người dùng. Bạn có thể điền vào các trường biểu mẫu khác nhau chứa Hộp kiểm, Văn bản, Đài phát thanh và nút Gửi để nhập liệu. Bạn có thể tạo hoặc điền biểu mẫu HTML theo chương trình bằng ngôn ngữ C#. Bài viết này bao gồm các phần sau liên quan đến các biểu mẫu HTML:

Tạo hoặc điền biểu mẫu HTML - Cài đặt API C#

API Aspose.HTML for .NET cho phép bạn tạo hoặc điền vào các biểu mẫu HTML bằng các nút Gửi theo chương trình bằng ngôn ngữ C#. Bạn có thể định cấu hình API bằng cách tải xuống tệp DLL từ phần Tải xuống hoặc nhanh chóng cài đặt nó bằng lệnh cài đặt NuGet sau:

PM> Install-Package Aspose.Html

Tạo biểu mẫu HTML có lập trình bằng C#

Bạn có thể tạo một biểu mẫu HTML theo cách lập trình bằng ngôn ngữ C#. Vui lòng làm theo các bước dưới đây để tạo nó từ đầu:

  1. Khởi tạo một phiên bản của lớp HTMLDocument.
  2. Tạo biểu mẫu HTML mới bằng phương thức CreateNew.
  3. Nhập trường loại văn bản đơn giản.
  4. Tạo phần tử đầu vào nút radio.
  5. Nhập nút gửi ở dạng HTML và thêm các nút hiện tại.
  6. Lưu biểu mẫu HTML.

Đoạn mã sau đây cho biết cách tạo biểu mẫu HTML theo cách lập trình bằng C#:

// Khởi tạo một phiên bản của lớp HTMLDocument
using (HTMLDocument document = new HTMLDocument())
{
    // Tạo biểu mẫu HTML mới với phương thức CreateNew()
    using (var editor = FormEditor.CreateNew(document))
    {
        // Nhập trường loại văn bản đơn giản
        var name = editor.AddInput("name");                    
        name.Type = InputElementType.Text;                    

        // Nhập một nút radio
        var size = editor.AddInput("size");
        size.Type = InputElementType.Radio;
        size.HtmlElement.InnerHTML = "Sample Text";

        // Nhập nút gửi ở dạng HTML
        var button = editor.Add<Forms.ButtonElement>("btn");
        button.Value = "submit";
        button.HtmlElement.InnerHTML = "Sample Button";

        // Thêm nút hiện tại
        document.Body.AppendChild(editor.Form);
    }
    // Lưu biểu mẫu HTML
    document.Save("Create-HTML-Form.html");
}

Hơn nữa, dưới đây là một cách tiếp cận khác để tạo biểu mẫu HTML bằng cách sử dụng phần tử biểu mẫu HTML gốc trong C#:

// Tạo Biểu mẫu HTML bằng cách sử dụng API HTML gốc
using (var document = new Aspose.Html.HTMLDocument())
{
    var editor = Aspose.Html.Forms.FormEditor.CreateNew(document);
    var body = document.Body;

    // tạo phần tử biểu mẫu
    var form = (HTMLFormElement)document.CreateElement("form");
//                form.Action = "action_page.php";

    // Tạo nhãn FirstName
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Tạo trường 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"));

    // Tạo nhãn LastName
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Tạo trường 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"));               

    // Tạo trường RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio1";
    input.Name = "Topping";
    form.AppendChild(input);

    // Tạo nhãn 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"));

    // Tạo trường RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio2";
    input.Name = "Topping";
    form.AppendChild(input);

    // Tạo nhãn 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"));

    // Tạo nút Gửi
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "submit";
    input.Value = "Submit";
    form.AppendChild(input);

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

Ảnh chụp màn hình sau đây cho thấy biểu mẫu HTML đầu ra được tạo bằng đoạn mã trên:

Tạo biểu mẫu HTML Gửi Btn

Điền vào biểu mẫu HTML với nút gửi trong C#

Bạn đã khám phá cách tạo một biểu mẫu HTML. Bây giờ bạn có thể tìm hiểu cách điền vào biểu mẫu HTML và gửi dữ liệu đến bất kỳ máy chủ từ xa nào trực tiếp từ ứng dụng C# của bạn. Bạn có thể lặp lại các mục khác nhau trong biểu mẫu và sau đó sử dụng nút Gửi để gửi dữ liệu. Tại đây, bạn sẽ làm việc với mẫu biểu mẫu được tạo bởi httpbin.org. Nó bao gồm điền vào các nút Văn bản, Đài phát thanh cũng như Hộp kiểm mà bạn đang tìm hiểu bên dưới:

Chọn Giá trị trong Hộp kiểm Loại Nhập liệu

Hộp kiểm rất hữu ích khi bạn cần chọn nhiều tùy chọn. Bạn có thể dễ dàng chọn giá trị trong hộp kiểm loại đầu vào với mã sau:

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)
{
    // Chọn cả hai tùy chọn hành tây và pho mát trong Hộp kiểm
    if (input.Value == "onion" || input.Value == "cheese")
    {
    	input.SetCheckboxValue(true);
    }
}

Điền vào Trường Văn bản và Đài phát thanh Kiểu nhập

Biểu mẫu HTML có thể chứa một số hộp văn bản và các trường nút radio để thu thập dữ liệu. Bạn có thể điền vào văn bản đầu vào bằng mã sau:

// Bạn có thể điền dữ liệu bằng cách sử dụng quyền truy cập trực tiếp vào các phần tử đầu vào, như sau:
editor["custname"].Value = "Aspose";

// hoặc cái này:
var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
comments.Value = "Extra Ketchup PLEASE!";

// hoặc thậm chí bằng cách thực hiện một hoạt động hàng loạt, như sau:
editor.Fill(new Dictionary<string, string>()
{
    {"custemail", "test@test.com"},
    {"custtel", "+123-456-789"}
});

Tương tự như vậy, bạn có thể chọn các trường nút radio với mã bên dưới:

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)
{
    // Chọn kích thước vừa bằng trong nút Radio
    if (input.Value == "medium")
    {
    	input.SetRadioValue(true);
    }
}

Gửi dữ liệu bằng nút gửi trong HTML

Bạn có thể gửi dữ liệu đã điền ở dạng HTML bằng nút Gửi bằng cách sử dụng lớp FormSubmitter. Đoạn mã sau cho biết cách gọi phương thức Gửi() trong mã C#:

// Tạo một phiên bản của trình gửi biểu mẫu
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// Gửi dữ liệu biểu mẫu đến máy chủ từ xa.
// Nếu bạn cần, bạn có thể chỉ định thông tin người dùng và thời gian chờ cho yêu cầu, v.v. bằng các phương thức quá tải
var result = submitter.Submit();

Mã nguồn

Dưới đây là mã nguồn hoàn chỉnh để điền các biểu mẫu HTML theo chương trình bằng C#:

// Khởi tạo một phiên bản của tài liệu HTML từ url 'https://httpbin.org/forms/post'
using (var document = new HTMLDocument(@"https://httpbin.org/forms/post"))
{
    // Tạo một phiên bản của Trình chỉnh sửa biểu mẫu
    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)
        {
            // Chọn kích thước vừa bằng trong nút Radio
            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)
        {
            // Chọn cả hai tùy chọn hành tây và pho mát trong Hộp kiểm
            if (input.Value == "onion" || input.Value == "cheese")
            {
                input.SetCheckboxValue(true);
            }
        }

        // Bạn có thể điền dữ liệu bằng cách sử dụng quyền truy cập trực tiếp vào các phần tử đầu vào, như sau:
        editor["custname"].Value = "Aspose";

        // hoặc cái này:
        var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
        comments.Value = "Extra Ketchup PLEASE!";

        // hoặc thậm chí bằng cách thực hiện một hoạt động hàng loạt, như sau:
        editor.Fill(new Dictionary<string, string>()
        {
            {"custemail", "test@test.com"},
            {"custtel", "+123-456-789"}
        });

        // Tạo một phiên bản của trình gửi biểu mẫu
        using (var submitter = new Aspose.Html.Forms.FormSubmitter(editor))
        {
            // Gửi dữ liệu biểu mẫu đến máy chủ từ xa.
            // Nếu cần, bạn có thể chỉ định thông tin người dùng và thời gian chờ cho yêu cầu, v.v.
            var result = submitter.Submit();

            // Kiểm tra trạng thái của đối tượng kết quả
            if (result.IsSuccess)
            {
                // Kiểm tra xem kết quả có ở định dạng json không
                if (result.ResponseMessage.Headers.ContentType.MediaType == "application/json")
                {
                    // Kết xuất dữ liệu kết quả vào bảng điều khiển
                    Console.WriteLine(result.Content.ReadAsString());
                }
                else
                {
                    // Tải dữ liệu kết quả dưới dạng tài liệu HTML
                    using (var resultDocument = result.LoadDocument())
                    {
                        // Kiểm tra tài liệu HTML tại đây.
                    }
                }

            }
        }
    }
}

Giấy phép API miễn phí

Bạn có thể đánh giá Aspose.HTML for .NET API mà không có bất kỳ Giới hạn Đánh giá nào bằng cách yêu cầu Giấy phép Tạm thời Miễn phí.

Sự kết luận

Tóm lại, bạn đã học cách tạo một biểu mẫu HTML từ đầu, cũng như cách điền vào một biểu mẫu HTML hiện có và gửi dữ liệu đến một máy chủ từ xa từ ứng dụng C# của bạn. Bạn cũng có thể truy cập phần Tài liệu để khám phá một số tính năng khác. Vui lòng liên hệ với chúng tôi tại Diễn đàn hỗ trợ miễn phí nếu bạn có bất kỳ thắc mắc nào.

Xem thêm