我有一个奇怪的情况,我在表单上动态生成字段 - 所有下拉列表。选择对应于我想要一起形成位掩码的二进制值。我用这种方式生成下拉菜单:
<table class="center">
@foreach (var field in Model.Fields)
{
<tr>
<td>@field.DisplayText:</td>
<td>
@Html.DropDownList(field.FieldName, new SelectList(field.Options, "FlagValue", "Text", field.SelectedValue), "(doesn't matter)")
</td>
</tr>
}
</table>
这似乎有效 - 只要在视图中呈现正确的HTML即可。但我的控制器没有收到字段中的选择。我试着循环遍历动态字段。
在下面的代码中,PatientSelectorEditor是我的ViewModel。
private void GetFlagInfo(PatientSelectorEditor pse, out string description, out long flags)
{
description = null;
flags = 0;
// get list of all possible fields that could be in the view.
pse.Fields = InitPatientSelectorFields(0);
foreach (PriceFlagField field in pse.Fields)
{
foreach (var option in field.Options)
{
// was something selected here?
if (Request[field.FieldName].Equals(option.FlagValue))
{
description += ", " + option.Text;
flags += option.FlagValue;
}
}
}
}
走的路
Request[field.Name]
在我的视图中找不到动态生成的字段。
我做错了什么?
答案 0 :(得分:0)
我弄清楚我在这里做错了什么。这一行......
if (Request[field.FieldName].Equals(option.FlagValue))
需要像这样的显式字符串比较
if (Request[field.FieldName].Equals(option.FlagValue.ToString()))