C# 在ASP.Net MVC中使用多个选项绑定
我有一个表单,用户可以在其中添加一些类别,并为这些类别添加一些选项。 当用户输入类别及其项目的数据时,我会将它们动态添加到a中,其中类别为,因此我可以将其绑定到某个ViewModel属性,在用户输入数据后如下所示:C# 在ASP.Net MVC中使用多个选项绑定,c#,asp.net,asp.net-mvc,razor,asp.net-core,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Core,我有一个表单,用户可以在其中添加一些类别,并为这些类别添加一些选项。 当用户输入类别及其项目的数据时,我会将它们动态添加到a中,其中类别为,因此我可以将其绑定到某个ViewModel属性,在用户输入数据后如下所示: <select asp-for="Items"> <optgroup label="Brands"> <option value="Brand1">Brand1</option> <option
<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>
然后我尝试将其绑定到ViewModel中的Items属性,但唯一可以绑定它的方法是使用类型列表的项。
这样我就失去了每个选项所属的组。
我怎样才能将它绑定为一个字典,这样我就可以保留我在html上所做的分组了
注:select将是不可见的,这是我获取某种结构的数据的唯一方法,我可以以表单的形式提交。演示将以某种标记形式完成。
比如:
我承认,我不确定这个答案是否正是你所问的,因为我很少在我的应用程序中使用ViewModels。如果我答错了,我会尝试更新我的答案 您可以从包含分组的模型中创建SelectList。在我的示例中,我有一个按国家分组的州/省字段 因此,在我的控制器的创建方法中,我有:
ViewData["StateList"] = new SelectList(_context.Set<State>(), "ID", "Name", "", "CountryID");
然后,我的视图采用此SelectList自动对元素进行分组
<select class="form-control" style="width: 200px;" asp-for="StateID" asp-items="ViewBag.StateList">
<option>-- Select One --</option>
</select>
其中StateID是数据库字段,ViewBag.StateList是我们在控制器中创建的ViewData[StateList]的等效项。您不能。A仅回发其所选选项的值并绑定到IEnumerable。请求中未发送任何与its相关的内容。除了生成每个选项的value=brand\uuuu brandname并在控制器上处理之外,没有其他方法吗?简短回答-否。
<select class="form-control" style="width: 200px;" asp-for="StateID" asp-items="ViewBag.StateList">
<option>-- Select One --</option>
</select>