所以我有一个下拉列表,出于某种原因,注入了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; }
正如您所看到的,这是一个没有归因验证的词典。也没有,一旦它到达控制器,我就添加了任何自定义验证。
我的问题是为什么以及在哪里发生验证错误,以便我可以删除此验证错误?
谢谢,
答案 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>