Створити Заповнити HTML-форму Надіслати C#

Форми HTML часто використовуються для отримання інформації від користувачів. Ви можете заповнити різні поля форми, які містять прапорець, текст, радіо та кнопку «Надіслати» для введення. Ви можете створити або заповнити HTML-форму програмно за допомогою мови C#. Ця стаття охоплює такі розділи, пов’язані з формами HTML:

Створіть або заповніть HTML-форму - встановлення C# API

Aspose.HTML for .NET API дозволяє створювати або заповнювати HTML-форми кнопками Надіслати програмним шляхом за допомогою мови C#. Ви можете налаштувати API, завантаживши файл DLL із розділу Завантаження, або швидко інсталювати його за допомогою наступної інсталяційної команди NuGet:

PM> Install-Package Aspose.Html

Створення HTML-форми програмним шляхом за допомогою C#

Ви можете створити HTML-форму програмно за допомогою мови C#. Щоб створити його з нуля, виконайте наведені нижче дії.

  1. Ініціалізувати екземпляр класу HTMLDocument.
  2. Створіть нову HTML-форму за допомогою методу CreateNew.
  3. Поле введення простого тексту.
  4. Створіть елемент введення радіокнопки.
  5. Введіть кнопку надсилання у форму HTML і додайте поточні вузли.
  6. Зберегти HTML-форму.

У наведеному нижче коді показано, як програмно створити форму HTML за допомогою C#:

// Ініціалізуйте екземпляр класу HTMLDocument
using (HTMLDocument document = new HTMLDocument())
{
    // Створіть нову HTML-форму за допомогою методу CreateNew().
    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");
}

Крім того, нижче наведено інший підхід для створення HTML-форми за допомогою рідного елемента форми HTML у C#:

// Створіть HTML-форму за допомогою рідного HTML API
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"));

    // Створення мітки Прізвище
    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-форму Надіслати Btn

Заповнити HTML-форму кнопкою «Надіслати» в C#

Ви вже досліджували, як створити форму 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

Ви можете надіслати заповнені дані у формі HTML за допомогою кнопки Надіслати за допомогою класу FormSubmitter. Наступний код показує, як викликати метод Submit() у коді C#:

// Створіть екземпляр відправника форми
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// Надішліть дані форми на віддалений сервер.
// Якщо вам потрібно, ви можете вказати облікові дані користувача та час очікування для запиту тощо за допомогою методів перевантаження
var result = submitter.Submit();

Вихідний код

Нижче наведено повний вихідний код для програмного заповнення форм HTML за допомогою C#:

// Ініціалізація екземпляра HTML-документа з URL-адреси "https://httpbin.org/forms/post"
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#. Ви також можете відвідати розділ Документація, щоб ознайомитися з кількома іншими функціями. Будь ласка, не соромтеся зв’язуватися з нами на безкоштовному форумі підтримки для будь-яких запитів.

Дивись також