2

我在视图中有以下表格:

@using (Html.BeginForm())
{
    @Html.DropDownListFor(m => m.ModelValue, Model.ModelSelectList, " - ", new {@class = "kendo-skip-dropdown"})
    @Html.ValidationMessageFor(m => m.ModelValue)
    <input type="submit" />
}

我还在$("select").not(".kendo-skip-dropdown").kendoDropDownList();_Layout.cshtml 中的页面加载代码中调用,以将我的所有select元素设置为 Kendo DropDownList小部件。

ModelValue == null对于所有测试都是如此,并且应用了kendo-skip-dropdown类,下拉列表是标准的,当我尝试发帖而不选择值时,我得到预期的“字段是必需的”客户端错误。如果我删除kendo-skip-dropdown该类并让 Kendo UI 完成其工作,并尝试在未选择值的情况下发布帖子,则会收到“必须是数字”客户端错误,表明我的optionLabel默认值现在被接受为值。

我使用 Kendo 时为下拉菜单呈现的 HTML 是:

<span tabindex="0" style="" class="k-widget k-dropdown k-header"><span class="k-dropdown-wrap k-state-default k-state-hover"><span class="k-input">-</span>
    <span class="k-select"><span class="k-icon k-arrow-down">select</span></span></span>
    <select data-val="true" data-val-number="The field ModelValue must be a number." data-val-required="The ModelValue field is required." id="ModelValue"
        name="ModelValue" style="display: none;" class="input-validation-error">
        <option>-</option>
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
        <option value="4">Four</option>
    </select></span>

这里有什么不同,谁能告诉我如何在非剑道和剑道选择列表之间保持我的验证一致?

4

1 回答 1

0

就个人而言,我在绝大多数验证中都使用数据注释。我不必深入研究标准验证器和 Kendo 验证器之间的差异,但我不得不使用 [Required] 等属性。

你看过文档了吗?对于标准类型与 Kendo 类型,它可能是以不同顺序应用的一条规则(在 Kendo 中它首先检查 Required 并停止,在标准中它首先检查数值?)

确保一致性的一种方法是始终使用 Kendo Validator,或者您可以查看覆盖助手,以便标准 ValidationMessage 在两者之间保持一致。

于 2012-11-21T22:08:01.410 回答