Skapa Fyll HTML-formulär Skicka C#

HTML-formulär används ofta för att få input från användarna. Du kan fylla i olika formulärfält som innehåller kryssruta, text, radio och knappen Skicka för inmatning. Du kan skapa eller fylla i HTML-formuläret programmatiskt med C#-språket. Den här artikeln täcker följande avsnitt relaterade till HTML-formulär:

Skapa eller fyll i HTML-formulär - C# API-installation

Aspose.HTML for .NET API låter dig skapa eller fylla HTML-formulär med Skicka-knappar programmatiskt med C#-språket. Du kan konfigurera API:et genom att ladda ner en DLL-fil från avsnittet Nedladdningar eller snabbt installera det med följande installationskommando NuGet:

PM> Install-Package Aspose.Html

Skapa ett HTML-formulär programmatiskt med C#

Du kan skapa ett HTML-formulär programmatiskt med C#-språket. Följ stegen nedan för att skapa den från början:

  1. Initiera en instans av klassen HTMLDocument.
  2. Skapa nytt HTML-formulär med metoden CreateNew.
  3. Mata in enkel texttypsfält.
  4. Skapa ett alternativknappsinmatningselement.
  5. Inmatningsknapp i HTML-form och lägg till aktuella noder.
  6. Spara HTML-formulär.

Följande kod visar hur man skapar ett HTML-formulär programmatiskt med C#:

// Initiera en instans av HTMLDocument-klassen
using (HTMLDocument document = new HTMLDocument())
{
    // Skapa nytt HTML-formulär med metoden CreateNew().
    using (var editor = FormEditor.CreateNew(document))
    {
        // Mata in enkel texttypsfält
        var name = editor.AddInput("name");                    
        name.Type = InputElementType.Text;                    

        // Mata in en alternativknapp
        var size = editor.AddInput("size");
        size.Type = InputElementType.Radio;
        size.HtmlElement.InnerHTML = "Sample Text";

        // Inmatningsknapp i HTML-form
        var button = editor.Add<Forms.ButtonElement>("btn");
        button.Value = "submit";
        button.HtmlElement.InnerHTML = "Sample Button";

        // Lägger till den aktuella noden
        document.Body.AppendChild(editor.Form);
    }
    // Spara HTML-formulär
    document.Save("Create-HTML-Form.html");
}

Dessutom, nedan är en annan metod för att skapa HTML-formulär med inbyggt HTML-formulärelement i C#:

// Skapa ett HTML-formulär med hjälp av inbyggt HTML-API
using (var document = new Aspose.Html.HTMLDocument())
{
    var editor = Aspose.Html.Forms.FormEditor.CreateNew(document);
    var body = document.Body;

    // skapa formelement
    var form = (HTMLFormElement)document.CreateElement("form");
//                form.Action = "action_page.php";

    // Skapa FirstName-etikett
    var label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "First name:";
    label.For = "fname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Skapa förnamnsfält
    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"));

    // Skapa efternamnsetikett
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Last name:";
    label.For = "lname";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));

    // Skapa efternamnsfält
    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"));               

    // Skapa RadioButton-fält
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio1";
    input.Name = "Topping";
    form.AppendChild(input);

    // Skapa RadioButton-etikett
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Male";
    label.For = "radio1";
    form.AppendChild(label);                
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));

    // Skapa RadioButton-fält
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "radio";
    input.Id = "radio2";
    input.Name = "Topping";
    form.AppendChild(input);

    // Skapa RadioButton-etikett
    label = (HTMLLabelElement)document.CreateElement("label");
    label.TextContent = "Female";
    label.For = "radio2";
    form.AppendChild(label);
    form.AppendChild(document.CreateElement("br"));
    form.AppendChild(document.CreateElement("br"));

    // Skapa Skicka-knapp
    input = (HTMLInputElement)document.CreateElement("input");
    input.Type = "submit";
    input.Value = "Submit";
    form.AppendChild(input);

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

Följande skärmdump visar HTML-formuläret som skapats med ovanstående kodavsnitt:

Skapa HTML-formulär Skicka Btn

Fyll i HTML-formulär med Skicka-knappen i C#

Du har redan utforskat hur man skapar ett HTML-formulär. Nu kan du lära dig hur du fyller i HTML-formulär och skickar data till valfri fjärrserver direkt från din C#-applikation. Du kan iterera genom olika poster i formuläret och sedan använda knappen Skicka för att skicka data. Här kommer du att arbeta med ett mallformulär skapat av httpbin.org. Det inkluderar att fylla i text, alternativknappar samt kryssrutor som du lär dig nedan:

Markera kryssrutan Value in Input Type

Kryssrutor är användbara när du behöver välja mer än ett alternativ. Du kan enkelt markera värdet i kryssrutan ingångstyp med följande kod:

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)
{
    // Välj lök och ost båda alternativen i kryssrutorna
    if (input.Value == "onion" || input.Value == "cheese")
    {
    	input.SetCheckboxValue(true);
    }
}

Fyll i fältet Input Type Text och Radio

Ett HTML-formulär kan innehålla flera textrutor och alternativknappsfält för insamling av data. Du kan fylla den inmatade texten med följande kod:

// Du kan fylla i data med direktåtkomst till inmatningselementen, så här:
editor["custname"].Value = "Aspose";

// eller det här:
var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
comments.Value = "Extra Ketchup PLEASE!";

// eller till och med genom att utföra en bulkoperation, som den här:
editor.Fill(new Dictionary<string, string>()
{
    {"custemail", "test@test.com"},
    {"custtel", "+123-456-789"}
});

På samma sätt kan du välja alternativknappsfält med koden nedan:

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)
{
    // Välj medium som storlek i radioknappen
    if (input.Value == "medium")
    {
    	input.SetRadioValue(true);
    }
}

Skickar data med Skicka-knappen i HTML

Du kan skicka ifylld data i HTML-formulär med knappen Skicka genom att använda klassen FormSubmitter. Följande kod visar hur man anropar metoden Submit() i C#-kod:

// Skapa en instans av avsändare av formulär
var submitter = new Aspose.Html.Forms.FormSubmitter(editor);

// Skicka formulärdata till fjärrservern.
// Om du behöver kan du ange användaruppgifter och timeout för begäran, etc. med överbelastningsmetoder
var result = submitter.Submit();

Källkod

Nedan är den fullständiga källkoden för att fylla i HTML-formulär programmatiskt med C#:

// Initiera en instans av HTML-dokument från webbadressen 'https://httpbin.org/forms/post'
using (var document = new HTMLDocument(@"https://httpbin.org/forms/post"))
{
    // Skapa en instans av Form Editor
    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)
        {
            // Välj medium som storlek i radioknappen
            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)
        {
            // Välj lök och ost båda alternativen i kryssrutorna
            if (input.Value == "onion" || input.Value == "cheese")
            {
                input.SetCheckboxValue(true);
            }
        }

        // Du kan fylla i data med direktåtkomst till inmatningselementen, så här:
        editor["custname"].Value = "Aspose";

        // eller det här:
        var comments = editor.GetElement<Aspose.Html.Forms.TextAreaElement>("comments");
        comments.Value = "Extra Ketchup PLEASE!";

        // eller till och med genom att utföra en bulkoperation, som den här:
        editor.Fill(new Dictionary<string, string>()
        {
            {"custemail", "test@test.com"},
            {"custtel", "+123-456-789"}
        });

        // Skapa en instans av avsändare av formulär
        using (var submitter = new Aspose.Html.Forms.FormSubmitter(editor))
        {
            // Skicka formulärdata till fjärrservern.
            // Om du behöver kan du ange användaruppgifter och timeout för begäran, etc.
            var result = submitter.Submit();

            // Kontrollera statusen för resultatobjektet
            if (result.IsSuccess)
            {
                // Kontrollera om resultatet är i json-format
                if (result.ResponseMessage.Headers.ContentType.MediaType == "application/json")
                {
                    // Dumpa resultatdata till konsolen
                    Console.WriteLine(result.Content.ReadAsString());
                }
                else
                {
                    // Ladda resultatdata som ett HTML-dokument
                    using (var resultDocument = result.LoadDocument())
                    {
                        // Inspektera HTML-dokumentet här.
                    }
                }

            }
        }
    }
}

Gratis API-licens

Du kan utvärdera Aspose.HTML för .NET API utan några utvärderingsbegränsningar genom att begära en Free Temporary License.

Slutsats

Sammanfattningsvis har du lärt dig hur du skapar ett HTML-formulär från grunden, samt hur du fyller i ett befintligt HTML-formulär och skickar data till en fjärrserver från din C#-applikation. Du kan också besöka avsnittet Dokumentation för att utforska flera andra funktioner. Kontakta oss gärna på Free Support Forum för alla dina frågor.

Se även