如何将DropDown List值的集合发回控制器

时间:2014-08-14 20:39:24

标签: asp.net-mvc asp.net-mvc-4 postback

我有以下内容:

查看模型

public ICollection<SelectConfigurableDataSyncOption> SelectConfigurableOptions { get; set; }

SelectConfigurableDataSyncOption

public class BaseConfigurableDataSyncOption
{
    public string OptionText { get; set; }
    public string OptionName { get; set; }
}

public class SelectConfigurableDataSyncOption : BaseConfigurableDataSyncOption
{
    public Dictionary<string, string> OptionValue { get; set; }
}

.cshtml:

@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>
}

我遇到的问题是将所选下拉列表的值发布回控制器。使用正常的下拉列表,我会声明一个变量来存储该值并将DropDownList绑定到那个没问题,但因为我可以回发任何数字,我不知道该怎么做。

我很高兴被告知我这样做完全错了,但实际上我试图允许在前端显示下拉列表列表。

2 个答案:

答案 0 :(得分:0)

看一下BeginCollectionItem Html Helper。我们每天都成功地使用它来生成一组Html输入(无论类型如何):

https://github.com/danludwig/BeginCollectionItem

Nuget Package:https://www.nuget.org/packages/BeginCollectionItem/

答案 1 :(得分:0)

我已设法对此进行排序,因此我会发布此主题的未来查询:

我将集合中的课程改为:

public class SelectConfigurableDataSyncOption : BaseConfigurableDataSyncOption
{
    //Added this in to track the selected option
    public string SelectedOptionValue { get; set; }
    public Dictionary<string, string> OptionValue { get; set; }
}

ICollection中的List更改为ViewModel

public List<SelectConfigurableDataSyncOption> SelectConfigurableOptions { get; set; }

然后将我的.cshtml文件更改为使用for循环而不是foreach

@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>
}

这使我可以访问Model.SelectConfigurableOptions[i].OptionValue,允许值回发给控制器。