Criar formulário HTML de preenchimento Enviar C#

Os formulários HTML são frequentemente usados para obter informações dos usuários. Você pode preencher diferentes campos de formulário contendo Caixa de seleção, Texto, Rádio e botão Enviar para entrada. Você pode criar ou preencher o formulário HTML programaticamente usando a linguagem C#. Este artigo abrange as seguintes seções relacionadas a formulários HTML:

Criar ou preencher formulário HTML - Instalação da API C#

Aspose.HTML for .NET API permite criar ou preencher formulários HTML com botões Enviar programaticamente usando a linguagem C#. Você pode configurar a API baixando um arquivo DLL da seção Downloads ou instalá-lo rapidamente com o seguinte comando de instalação NuGet:

PM> Install-Package Aspose.Html

Criar um formulário HTML programaticamente usando C#

Você pode criar um formulário HTML programaticamente usando a linguagem C#. Por favor, siga os passos abaixo para criá-lo do zero:

  1. Inicialize uma instância da classe HTMLDocument.
  2. Crie um novo formulário HTML com o método CreateNew.
  3. Insira o campo de tipo de texto simples.
  4. Crie um elemento de entrada de botão de opção.
  5. Insira o botão de envio no formulário HTML e adicione os nós atuais.
  6. Salvar formulário HTML.

O código a seguir mostra como criar um formulário HTML programaticamente usando C#:

// Inicialize uma instância da classe HTMLDocument
using (HTMLDocument document = new HTMLDocument())
{
    // Crie um novo formulário HTML com o método CreateNew()
    using (var editor = FormEditor.CreateNew(document))
    {
        // Insira o campo de tipo de texto simples
        var name = editor.AddInput("name");                    
        name.Type = InputElementType.Text;                    

        // Insira um botão de rádio
        var size = editor.AddInput("size");
        size.Type = InputElementType.Radio;
        size.HtmlElement.InnerHTML = "Sample Text";

        // Botão de envio de entrada no formulário HTML
        var button = editor.Add<Forms.ButtonElement>("btn");
        button.Value = "submit";
        button.HtmlElement.InnerHTML = "Sample Button";

        // Adiciona o nó atual
        document.Body.AppendChild(editor.Form);
    }
    // Salvar formulário HTML
    document.Save("Create-HTML-Form.html");
}

Além disso, abaixo está outra abordagem para criar formulário HTML usando o elemento de formulário HTML nativo em C#:

// Criar um formulário HTML usando a API HTML nativa
using (var document = new Aspose.Html.HTMLDocument())
{
    var editor = Aspose.Html.Forms.FormEditor.CreateNew(document);
    var body = document.Body;

    // criar elemento de formulário
    var form = (HTMLFormElement)document.CreateElement("form");
//                form.Action = "action_page.php";

    // Criar rótulo FirstName
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Criar campo 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"));

    // Criar rótulo de sobrenome
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Criar campo sobrenome
    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"));               

    // Criar campo RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio1";
    input.Name = "Topping";
    form.AppendChild(input);

    // Criar rótulo 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"));

    // Criar campo RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio2";
    input.Name = "Topping";
    form.AppendChild(input);

    // Criar rótulo 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"));

    // Botão Criar Enviar
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "submit";
    input.Value = "Submit";
    form.AppendChild(input);

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

A captura de tela a seguir mostra o formulário HTML de saída criado com o snippet de código acima:

Criar formulário HTML Enviar Btn

Preencha o formulário HTML com o botão Enviar em C#

Você já explorou como criar um formulário HTML. Agora você pode aprender a preencher formulários HTML e enviar os dados para qualquer servidor remoto diretamente de seu aplicativo C#. Você pode percorrer diferentes itens no formulário e, em seguida, usar o botão Enviar para enviar os dados. Aqui você estará trabalhando com um modelo de formulário criado por httpbin.org. Inclui preenchimento de texto, botões de opção, bem como caixas de seleção que você está aprendendo abaixo:

Marque a caixa de seleção Valor no tipo de entrada

As caixas de seleção são úteis quando você precisa escolher mais de uma opção. Você pode selecionar facilmente o valor na caixa de seleção do tipo de entrada com o seguinte código:

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)
{
    // Escolha cebola e queijo ambas as opções nas caixas de seleção
    if (input.Value == "onion" || input.Value == "cheese")
    {
    	input.SetCheckboxValue(true);
    }
}

Preencha o campo de texto e rádio do tipo de entrada

Um formulário HTML pode conter várias caixas de texto e campos de botão de opção para coletar dados. Você pode preencher o texto de entrada com o seguinte código:

// Você pode preencher os dados usando acesso direto aos elementos de entrada, assim:
editor["custname"].Value = "Aspose";

// ou isto:
var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
comments.Value = "Extra Ketchup PLEASE!";

// ou mesmo realizando uma operação em massa, como esta:
editor.Fill(new Dictionary<string, string>()
{
    {"custemail", "test@test.com"},
    {"custtel", "+123-456-789"}
});

Da mesma forma, você pode selecionar campos de botão de opção com o código abaixo:

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)
{
    // Selecione médio como tamanho no botão Rádio
    if (input.Value == "medium")
    {
    	input.SetRadioValue(true);
    }
}

Enviando dados com o botão Enviar em HTML

Você pode enviar dados preenchidos em formulário HTML com o botão Enviar usando a classe FormSubmitter. O código a seguir mostra como chamar o método Submit() no código C#:

// Criar uma instância do remetente do formulário
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// Envie os dados do formulário para o servidor remoto.
// Se precisar, você pode especificar credenciais de usuário e tempo limite para a solicitação, etc. com métodos de sobrecarga
var result = submitter.Submit();

Código fonte

Abaixo está o código-fonte completo para preencher formulários HTML programaticamente usando C#:

// Inicialize uma instância do documento HTML do URL 'https://httpbin.org/forms/post'
using (var document = new HTMLDocument(@"https://httpbin.org/forms/post"))
{
    // Criar uma instância do Editor de formulários
    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)
        {
            // Selecione médio como tamanho no botão Rádio
            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)
        {
            // Escolha cebola e queijo ambas as opções nas caixas de seleção
            if (input.Value == "onion" || input.Value == "cheese")
            {
                input.SetCheckboxValue(true);
            }
        }

        // Você pode preencher os dados usando acesso direto aos elementos de entrada, assim:
        editor["custname"].Value = "Aspose";

        // ou isto:
        var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
        comments.Value = "Extra Ketchup PLEASE!";

        // ou mesmo realizando uma operação em massa, como esta:
        editor.Fill(new Dictionary<string, string>()
        {
            {"custemail", "test@test.com"},
            {"custtel", "+123-456-789"}
        });

        // Criar uma instância do remetente do formulário
        using (var submitter = new Aspose.Html.Forms.FormSubmitter(editor))
        {
            // Envie os dados do formulário para o servidor remoto.
            // Se precisar, você pode especificar credenciais de usuário e tempo limite para a solicitação, etc.
            var result = submitter.Submit();

            // Verifique o status do objeto de resultado
            if (result.IsSuccess)
            {
                // Verifique se o resultado está no formato json
                if (result.ResponseMessage.Headers.ContentType.MediaType == "application/json")
                {
                    // Despeje os dados do resultado no console
                    Console.WriteLine(result.Content.ReadAsString());
                }
                else
                {
                    // Carregar os dados do resultado como um documento HTML
                    using (var resultDocument = result.LoadDocument())
                    {
                        // Inspecione o documento HTML aqui.
                    }
                }

            }
        }
    }
}

Licença API gratuita

Você pode avaliar Aspose.HTML para .NET API sem quaisquer Limitações de Avaliação solicitando uma Licença Temporária Gratuita.

Conclusão

Concluindo, você aprendeu como criar um formulário HTML do zero, bem como preencher um formulário HTML existente e enviar os dados para um servidor remoto de seu aplicativo C#. Você também pode visitar a seção Documentação para explorar vários outros recursos. Sinta-se à vontade para entrar em contato conosco no Fórum de suporte gratuito para qualquer dúvida.

Veja também