【发布时间】:2022-01-06 15:29:23
【问题描述】:
说明
嵌套对象需要绑定到下拉列表,嵌套对象已经有一个预选值。可能的值是枚举类型。带有一些其他数据的下拉列表将被发送回控制器。
代码 - 类型和类:
[Serializable]
public enum DummyEnum
{
DummyZero = 0,
DummyOne = 1
}
public class Dummy
{
public Guid Id { get; set; }
public Dictionary<Guid, DummyEnum> DummyEnum { get; set; }
}
public class DummyViewModel
{
public Dictionary<Guid, List<Dummy>> Dummies { get; set; }
}
public class DummyController
{
private void Init(DummyViewModel model)
{
model.EnumList = Enum.GetValues(typeof(DummyEnum))
.Cast<DummyEnum>()
.Select(e => new SelectListItem
{
Value = (e).ToString(),
Text = e.ToString()
});
}
}
HTML:
<td>
@Html.DropDownListFor(
m => m.Dummies[dummiesKey][dummyIndex]
.Enum[Id],
new SelectList(Model.EnumList, "Value", "Text", e.ToString()))
</td>
<select
data-val="true"
data-val-required="The Enum field is required."
id="Dummies_guid__0__Enum_guid_"
name="Dummies[guid][0].Enum[guid]"
style="display: none;"
>
<option value="DummyOne">DummyOne</option>
<option selected="selected" value="DummyZero ">DummyZero</option>
</select>
问题
问题在于模型似乎无法将有效负载映射回对象或错过对绑定对象的引用。所有内容都正确填写了 guid、索引和枚举值。
有效载荷:
Dummies[guid][0].Enum[guid]: DummyZero
Dummies[guid][0].Enum[guid]: DummyZero
尝试
我尝试了以下想法,但对我来说并不成功。
我错过了什么?
【问题讨论】:
标签: c# asp.net-mvc razor data-binding