下拉列表中的MVC未知验证

时间:2018-01-09 23:40:20

标签: c# asp.net-mvc validation

所以我有一个下拉列表,出于某种原因,注入了input-validation-error类。当我第一次加载页面时,一切都在GET请求上正常加载。直到表单被POST回来它才会失效。无论选择哪个选项,在MVC上都会注入错误类,错误信息会显示"值' 0' 0无效"。它显示的值是选择的值,可以是任何有效的整数。

以下是CSHTML:

<div class="form-group">
            @Html.LabelFor(m => m.DistributionTable, "Distribution:", new { @class = "col-lg-2 control-label" })
            <div class="col-lg-10">
                @Html.DropDownListFor(m => m.DistributionTable, new SelectList(Model.DistributionTable, "Value", "Key", Model.Criteria.SelectedDistribution), new { @class = "form-control" })
                @Html.ValidationMessageFor(m => m.DistributionTable)
            </div>
        </div>

从那里你可以看到下拉列表绑定到一个看起来像这样的字段DistributionTable:

    [XmlIgnore]
    public Dictionary<string, int> DistributionTable { get; set; }

正如您所看到的,这是一个没有归因验证的词典。也没有,一旦它到达控制器,我就添加了任何自定义验证。

我的问题是为什么以及在哪里发生验证错误,以便我可以删除此验证错误?

谢谢,

1 个答案:

答案 0 :(得分:0)

谢谢ashik和Stephen Muecke。评论引导我重构这个最终起作用的代码。现在,dropdownlistfor被绑定到所选项目而不是实际的选项词典。

        <div class="form-group">
            @*@Html.LabelFor(m => m.DistributionTable, "Distribution:", new { @class = "col-lg-2 control-label" })*@
            @Html.LabelFor(m => m.Criteria.SelectedDistribution, "Distribution:", new { @class = "col-lg-2 control-label" })
            <div class="col-lg-10">
                @*@Html.DropDownListFor(m => m.DistributionTable, new SelectList(Model.DistributionTable, "Value", "Key", Model.Criteria.SelectedDistribution), new { @class = "form-control" })*@
                @Html.DropDownListFor(m => m.Criteria.SelectedDistribution, new SelectList(Model.DistributionTable, "Value", "Key"), new { @class = "form-control" })
                @*@Html.ValidationMessageFor(m => m.DistributionTable)*@
                @Html.ValidationMessageFor(m => m.Criteria.SelectedDistribution)
            </div>
        </div>