在MVC3应用程序中使用Kendo DropDownList时客户端验证有何变化?

时间:2012-05-06 15:56:38

标签: asp.net-mvc asp.net-mvc-3 kendo-ui

我在视图中有以下表格:

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

我还在_Layout.cshtml中的页面加载代码中调用$("select").not(".kendo-skip-dropdown").kendoDropDownList();,将所有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>

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

1 个答案:

答案 0 :(得分:0)

就个人而言,我使用数据注释来进行绝大多数验证。我没有必要深入研究标准验证器和剑道验证器之间的差异,但我不得不使用[必需]和这些属性。

你看过documentation了吗?对于标准类型和Kendo类型,可能会按照不同的顺序应用一条规则(在Kendo中它首先检查是必需的并停止,在标准中它首先检查数值?)

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