Создать заполненную 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";

    // Создать метку имени
    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-форму Отправить Btn

Заполнить 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

Вы можете отправить заполненные данные в HTML-форме с помощью кнопки Submit, используя класс 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 для .NET API без каких-либо ограничений оценки, запросив Бесплатную временную лицензию.

Вывод

В заключение вы узнали, как создать HTML-форму с нуля, а также как заполнить существующую HTML-форму и отправить данные на удаленный сервер из вашего приложения C#. Вы также можете посетить раздел Документация, чтобы изучить некоторые другие функции. Если у вас возникнут вопросы, обращайтесь к нам на Форум бесплатной поддержки.

Смотрите также