'How do you initialize a FormCollection with properties in .NET?

I've tried the usual way of:

var form = new FormCollection { "WeekList" = weekfilter, "PracticeList" = practicefilter}

and all possible deviations I could think of, but ultimately had to seperate it apart as:

var form = new FormCollection();
form["WeekList"] = weekfilter;
form["PracticeList"] = practicefilter;

How can I initialize this inline? Is it possible? (I'm basically trying to mimic a form being submitted)



Solution 1:[1]

If you're using ASP.NET MVC (not core), you can initialize System.Web.Mvc.FormCollection like this:

var form = new FormCollection {
    {"WeekList", weekfilter},
    {"PracticeList", practicefitler}
}

Demo in .NET Fiddle

But I'm not the right computer to test this. I'm basing this on the .Add method of FormCollection begin declared as:

public virtual void Add(
    string name,
    string value
)

What types are the filter variables declared as?

Solution 2:[2]

If you're using Microsoft.AspNetCore.Http.FormCollection in aspnet core, you can initialize like this:

var formCol = new FormCollection(new Dictionary<string, Microsoft.Extensions.Primitives.StringValues>
{
    { "Field1", "String Value 1" },
    { "Field2", "String Value 2" },
    { "Field3", "String Value 3" }
});

Demo in .NET Fiddle

Then, if you need to create a controller with test data, you can pass to the controller create method like this:

// Call create controller with test data
_controller.Create(formCol);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 KyleMit
Solution 2 KyleMit