Utwórz Wypełnij formularz HTML Prześlij C#

Formularze HTML są często używane do uzyskiwania danych od użytkowników. Możesz wypełnić różne pola formularza zawierające pole wyboru, tekst, radio i przycisk Prześlij do wprowadzenia. Formularz HTML można utworzyć lub wypełnić programowo przy użyciu języka C#. Ten artykuł obejmuje następujące sekcje związane z formularzami HTML:

Utwórz lub wypełnij formularz HTML — instalacja interfejsu API języka C#

Aspose.HTML for .NET API pozwala programowo tworzyć lub wypełniać formularze HTML za pomocą przycisków Prześlij przy użyciu języka C#. Możesz skonfigurować API, pobierając plik DLL z sekcji Downloads lub szybko zainstalować go za pomocą następującego polecenia instalacyjnego NuGet:

PM> Install-Package Aspose.Html

Utwórz programowo formularz HTML przy użyciu języka C#

Formularz HTML można utworzyć programowo przy użyciu języka C#. Aby utworzyć go od podstaw, wykonaj poniższe czynności:

  1. Zainicjuj instancję klasy HTMLDocument.
  2. Utwórz nowy formularz HTML metodą CreateNew.
  3. Wprowadź proste pole tekstowe.
  4. Utwórz element wejściowy przycisku radiowego.
  5. Wprowadź przycisk przesyłania w formacie HTML i dodaj bieżące węzły.
  6. Zapisz formularz HTML.

Poniższy kod pokazuje, jak programowo utworzyć formularz HTML przy użyciu języka C#:

// Zainicjuj instancję klasy HTMLDocument
using (HTMLDocument document = new HTMLDocument())
{
    // Utwórz nowy formularz HTML za pomocą metody CreateNew().
    using (var editor = FormEditor.CreateNew(document))
    {
        // Wprowadź proste pole tekstowe
        var name = editor.AddInput("name");                    
        name.Type = InputElementType.Text;                    

        // Wprowadź przycisk radiowy
        var size = editor.AddInput("size");
        size.Type = InputElementType.Radio;
        size.HtmlElement.InnerHTML = "Sample Text";

        // Wprowadź przycisk przesyłania w formacie HTML
        var button = editor.Add<Forms.ButtonElement>("btn");
        button.Value = "submit";
        button.HtmlElement.InnerHTML = "Sample Button";

        // Dodaje bieżący węzeł
        document.Body.AppendChild(editor.Form);
    }
    // Zapisz formularz HTML
    document.Save("Create-HTML-Form.html");
}

Ponadto poniżej przedstawiono inne podejście do tworzenia formularza HTML przy użyciu natywnego elementu formularza HTML w języku C#:

// Utwórz formularz HTML przy użyciu natywnego interfejsu API HTML
using (var document = new Aspose.Html.HTMLDocument())
{
    var editor = Aspose.Html.Forms.FormEditor.CreateNew(document);
    var body = document.Body;

    // utwórz element formularza
    var form = (HTMLFormElement)document.CreateElement("form");
//                form.Action = "action_page.php";

    // Utwórz etykietę Imię
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Utwórz pole Imię
    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"));

    // Utwórz etykietę Nazwisko
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Utwórz pole Nazwisko
    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"));               

    // Utwórz pole RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio1";
    input.Name = "Topping";
    form.AppendChild(input);

    // Utwórz etykietę 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"));

    // Utwórz pole RadioButton
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio2";
    input.Name = "Topping";
    form.AppendChild(input);

    // Utwórz etykietę 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"));

    // Utwórz przycisk Prześlij
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "submit";
    input.Value = "Submit";
    form.AppendChild(input);

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

Poniższy zrzut ekranu pokazuje wyjściowy formularz HTML utworzony za pomocą powyższego fragmentu kodu:

Utwórz formularz HTML Prześlij Btn

Wypełnij formularz HTML przyciskiem Prześlij w C#

Poznałeś już sposób tworzenia formularza HTML. Teraz możesz dowiedzieć się, jak wypełnić formularz HTML i wysłać dane do dowolnego zdalnego serwera bezpośrednio z aplikacji C#. Możesz przeglądać różne pozycje w formularzu, a następnie użyć przycisku Prześlij do wysłania danych. Tutaj będziesz pracować z template form stworzonym przez httpbin.org. Obejmuje wypełnianie tekstu, przycisków radiowych, a także pól wyboru, których uczysz się poniżej:

Zaznacz pole wyboru Wartość w polu Typ wejścia

Pola wyboru są przydatne, gdy trzeba wybrać więcej niż jedną opcję. Możesz łatwo wybrać wartość w polu wyboru typu wejścia za pomocą następującego kodu:

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)
{
    // Wybierz obie opcje z cebulą i serem w polach wyboru
    if (input.Value == "onion" || input.Value == "cheese")
    {
    	input.SetCheckboxValue(true);
    }
}

Wypełnij pola tekstowe typu wejściowego i radiowe

Formularz HTML może zawierać kilka pól tekstowych i pól opcji służących do gromadzenia danych. Możesz wypełnić tekst wejściowy następującym kodem:

// Możesz uzupełnić dane, korzystając z bezpośredniego dostępu do elementów wejściowych, na przykład:
editor["custname"].Value = "Aspose";

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

// lub nawet wykonując operację zbiorczą, taką jak ta:
editor.Fill(new Dictionary<string, string>()
{
    {"custemail", "test@test.com"},
    {"custtel", "+123-456-789"}
});

Podobnie możesz wybrać pola przycisków radiowych za pomocą poniższego kodu:

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)
{
    // Wybierz średni jako rozmiar w przycisku opcji
    if (input.Value == "medium")
    {
    	input.SetRadioValue(true);
    }
}

Wysyłanie danych za pomocą przycisku Prześlij w formacie HTML

Możesz wysłać wypełnione dane w formularzu HTML przyciskiem Wyślij używając klasy FormSubmitter. Poniższy kod pokazuje, jak wywołać metodę Submit() w kodzie C#:

// Utwórz instancję osoby przesyłającej formularz
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// Prześlij dane formularza na zdalny serwer.
// Jeśli potrzebujesz, możesz określić poświadczenia użytkownika i limit czasu dla żądania itp. Za pomocą metod przeciążenia
var result = submitter.Submit();

Kod źródłowy

Poniżej znajduje się pełny kod źródłowy do programowego wypełniania formularzy HTML przy użyciu języka C#:

// Zainicjuj instancję dokumentu HTML z adresu URL „https://httpbin.org/forms/post”.
using (var document = new HTMLDocument(@"https://httpbin.org/forms/post"))
{
    // Utwórz instancję Edytora formularzy
    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)
        {
            // Wybierz średni jako rozmiar w przycisku opcji
            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)
        {
            // Wybierz obie opcje z cebulą i serem w polach wyboru
            if (input.Value == "onion" || input.Value == "cheese")
            {
                input.SetCheckboxValue(true);
            }
        }

        // Możesz uzupełnić dane, korzystając z bezpośredniego dostępu do elementów wejściowych, na przykład:
        editor["custname"].Value = "Aspose";

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

        // lub nawet wykonując operację zbiorczą, taką jak ta:
        editor.Fill(new Dictionary<string, string>()
        {
            {"custemail", "test@test.com"},
            {"custtel", "+123-456-789"}
        });

        // Utwórz instancję osoby przesyłającej formularz
        using (var submitter = new Aspose.Html.Forms.FormSubmitter(editor))
        {
            // Prześlij dane formularza na zdalny serwer.
            // Jeśli potrzebujesz, możesz określić poświadczenia użytkownika i limit czasu dla żądania itp.
            var result = submitter.Submit();

            // Sprawdź status obiektu wynikowego
            if (result.IsSuccess)
            {
                // Sprawdź, czy wynik jest w formacie json
                if (result.ResponseMessage.Headers.ContentType.MediaType == "application/json")
                {
                    // Zrzuć dane wyników do konsoli
                    Console.WriteLine(result.Content.ReadAsString());
                }
                else
                {
                    // Załaduj dane wynikowe jako dokument HTML
                    using (var resultDocument = result.LoadDocument())
                    {
                        // Sprawdź dokument HTML tutaj.
                    }
                }

            }
        }
    }
}

Bezpłatna licencja API

Możesz ocenić Aspose.HTML for .NET API bez żadnych ograniczeń oceny, prosząc o bezpłatną licencję tymczasową.

Wniosek

Podsumowując, nauczyłeś się, jak utworzyć formularz HTML od podstaw, a także jak wypełnić istniejący formularz HTML i wysłać dane na zdalny serwer z aplikacji C#. Możesz także odwiedzić sekcję Dokumentacja, aby zapoznać się z kilkoma innymi funkcjami. Prosimy o kontakt z nami na Bezpłatne forum pomocy technicznej w przypadku jakichkolwiek pytań.

Zobacz też