我注意到MVC绑定中的奇怪行为。假设我有ViewModel将数据传入/传出我的View。运送可以有许多PaymenTypes(类型为ItemViewModel)。例如:
public class ShippingViewModel
{
public ItemViewModel[] PaymentTypes { get; set; }
}
public class ItemViewModel
{
public ItemViewModel()
{
}
public ItemViewModel(Guid key, string value, bool isActive)
{
Key = key;
Value = value;
IsActive = isActive;
}
public object Key { get; set; }
public string Value { get; set; }
public bool IsActive { get; set; }
}
在我看来,我有所有付款类型的复选框(我不想因为设计而使用多个下拉列表)。
@{ int order = 0;}
@foreach (var item in Model.PaymentTypes)
{
<div class="checkbox-group">
@Html.Hidden("PaymentTypes[" + order + "].Key", item.Key)
@Html.Label("PaymentTypes[" + order + "].IsActive", item.Value, new { @class = "sectioncheckboxhelp" })
@if (item.IsActive)
{
@Html.CheckBox("PaymentTypes[" + order + "].IsActive", new { @class = "form-control sectioncheckbox", @checked = "checked" })
}
else
{
@Html.CheckBox("PaymentTypes[" + order + "].IsActive", new { @class = "form-control sectioncheckbox" })
}
</div>
order++;
}
一切正常但在发布到我的控制器操作后,Key不是Guid,而是字符串数组,其中一个键是Guid 。
预期:
但我有
当我对整数值使用相同的解决方案时,一切都运行良好。 任何想法为什么Guid从视图绑定到对象数组?