I have a form where the user can add some sort of categories and add some options to those categories.
When the user enter the data for the category and its items, I dynamically add them in a <select>, where the category is the <optgroup>, so I can bind it to some ViewModel property, it looks like this after the user entered the data:
<select asp-for="Items">
<optgroup label="Brands">
<option value="Brand1">Brand1</option>
<option value="Brand2">Brand2</option>
<option value="Brand3">Brand3</option>
<option value="Brand4">Brand4</option>
</optgroup>
<optgroup label="Something">
<option value="Something1" selected>Something1</option>
<option value="Something2" selected>Something2</option>
<option value="Something3" selected>Something3</option>
<option value="Something4" selected>Something4</option>
</optgroup>
</select>
Then I try to bind this to the Items property in the ViewModel, but the only way I can bind this, is with the Items of the type List<string>.
This way I lost the Group each option belongs to.
How could I bind it for something like a Dictionary<string, List<string>> where I can keep the grouping that I did on the html?
PS.: The select will be invisible, its only a way for me to get the data in some structure that I can submit in a form. The presentation will be done in some sort of tags. Like:

<select>only posts back the values of its selected options (and binds toIEnumerable<string>). Nothing related to its<optgroup>are sent in the request.value="brand__brandname"of each option and dealing it on the controller ?