Asp.net mvc 将字典从视图传递到控制器
型号: 视图:Asp.net mvc 将字典从视图传递到控制器,asp.net-mvc,razor,Asp.net Mvc,Razor,型号: 视图: FreeText输入字段的传递非常顺利。但是,即使SearchValues字段的下拉列表在页面上正确显示,它在控制器中返回为空计数=0。为什么会这样,我可以将字典传递给控制器吗?无需使用映射器或更改模型属性的绑定方式,最简单的方法是为SearchValue创建一个类 创建SearchValue类 将其用作模型中的列表 然后使用下面的视图 无需使用映射器或更改模型属性的绑定方式,最简单的方法是为SearchValue创建一个类 创建SearchValue类 将其用作模型中的列表 然
FreeText输入字段的传递非常顺利。但是,即使SearchValues字段的下拉列表在页面上正确显示,它在控制器中返回为空计数=0。为什么会这样,我可以将字典传递给控制器吗?无需使用映射器或更改模型属性的绑定方式,最简单的方法是为SearchValue创建一个类 创建SearchValue类 将其用作模型中的列表 然后使用下面的视图
无需使用映射器或更改模型属性的绑定方式,最简单的方法是为SearchValue创建一个类 创建SearchValue类 将其用作模型中的列表 然后使用下面的视图
通过将kvp从更改为,我能够保留字典格式。显然,模型绑定器只接受字符串格式的键。通过将kvp从更改为,我能够保留字典格式。显然,模型绑定器只接受字符串格式的键。您试图将下拉字段ID保存为int,将下拉值保存为string是否正确?@JerdineSabio是的,100%正确。您试图将下拉字段ID保存为int,将下拉值保存为string是否正确?@JerdineSabio是的,100%正确。
public string FreeText { get; set; }
public Dictionary<int, string> SearchValues { get; set; }
public List<DropDownModel> DropDowns { get; set; }
@using (Html.BeginForm("GetSearchResults", "Home", FormMethod.Post))
{
@Html.TextBoxFor(m => m.FreeText, new { @class = "form-control mb-3", @placeholder = "Search..." })
foreach (var dropDown in Model.DropDowns)
{
@Html.DropDownListFor(m => m.SearchValues[dropDown.DataFieldId], dropDown.ListItems, dropDown.OptionLabel, new { @class = "form-control mb-3" });
}
<button type="submit" class="btn btn-primary btn-block">Search</button>
}
public class SearchValue{
public int Id {get;set;}
public string value {get;set;}
}
public string FreeText { get; set; }
// replace dictionary
public List<SearchValue> SearchValues { get; set; }
public List<DropDownModel> DropDowns { get; set; }
@using (Html.BeginForm("GetSearchResults", "Home", FormMethod.Post))
{
@Html.TextBoxFor(m => m.FreeText, new { @class = "form-control mb-3", @placeholder = "Search..." })
@{
int counter = 0;
}
foreach (var dropDown in Model.DropDowns)
{
<input type="hidden" name="SearchValues[@counter].Id" value="@dropdown.DataFieldId">
@Html.DropDownListFor(m => m.SearchValues[counter].Value, dropDown.ListItems, dropDown.OptionLabel, new { @class = "form-control mb-3" });
@counter++;
}
<button type="submit" class="btn btn-primary btn-block">Search</button>
}