Asp.net mvc 如何将下拉列表值的集合回发到控制器
我有以下资料: 视图模型: 选择ConfigurableDataSyncopion: .cshtml: 我遇到的问题是将所选下拉列表的值发回控制器。对于一个普通的下拉列表,我会声明一个变量来存储该值,并将DropDownList绑定到该值,这很好,但是因为我可以发回任何数字,我不知道该怎么做Asp.net mvc 如何将下拉列表值的集合回发到控制器,asp.net-mvc,asp.net-mvc-4,postback,Asp.net Mvc,Asp.net Mvc 4,Postback,我有以下资料: 视图模型: 选择ConfigurableDataSyncopion: .cshtml: 我遇到的问题是将所选下拉列表的值发回控制器。对于一个普通的下拉列表,我会声明一个变量来存储该值,并将DropDownList绑定到该值,这很好,但是因为我可以发回任何数字,我不知道该怎么做 我很高兴被告知我做得完全错误,但本质上我是在尝试允许在前端显示下拉列表列表。看看BeginCollectionItem Html帮助程序。我们每天都成功地使用它来生成Html输入的集合,而不考虑类型: Nu
我很高兴被告知我做得完全错误,但本质上我是在尝试允许在前端显示下拉列表列表。看看BeginCollectionItem Html帮助程序。我们每天都成功地使用它来生成Html输入的集合,而不考虑类型:
Nuget Package:我已设法对此进行了排序,因此我将发布帖子,以备将来查询: 我将集合中的类更改为:
public class SelectConfigurableDataSyncOption : BaseConfigurableDataSyncOption
{
//Added this in to track the selected option
public string SelectedOptionValue { get; set; }
public Dictionary<string, string> OptionValue { get; set; }
}
然后将my.cshtml文件更改为使用for循环而不是foreach:
这使我可以访问Model.SelectConfigurableOptions[i].OptionValue,它允许将值发回控制器。我可以问一下,我问的问题有多不清楚。下面一段清楚地说明了这一点。如果没有,请说明哪些地方不清楚,我会尽可能多地澄清。现在看一看。谢谢
public class BaseConfigurableDataSyncOption
{
public string OptionText { get; set; }
public string OptionName { get; set; }
}
public class SelectConfigurableDataSyncOption : BaseConfigurableDataSyncOption
{
public Dictionary<string, string> OptionValue { get; set; }
}
@foreach (SelectConfigurableDataSyncOption option in Model.SelectConfigurableOptions)
{
<div class="span6">
<h4>@option.OptionText?</h4>
<p>@Html.DropDownListFor(m => {WHAT TO DO}, new SelectList(option.OptionValue, "Key", "Value"), new { @class = "m-wrap span12" })</p>
</div>
}
public class SelectConfigurableDataSyncOption : BaseConfigurableDataSyncOption
{
//Added this in to track the selected option
public string SelectedOptionValue { get; set; }
public Dictionary<string, string> OptionValue { get; set; }
}
public List<SelectConfigurableDataSyncOption> SelectConfigurableOptions { get; set; }
@for (int i = 0; i < Model.SelectConfigurableOptions.Count; i++)
{
<div class="span6">
<h4>@Model.SelectConfigurableOptions[i].OptionText?</h4>
<p>@Html.DropDownListFor(m => Model.SelectConfigurableOptions[i].SelectedOptionValue, new SelectList(Model.SelectConfigurableOptions[i].OptionValue, "Key", "Value"), new { @class = "m-wrap span12" })</p>
</div>
}