【问题标题】:Telerik Kendo MVC Grid Validation Always FailsTelerik Kendo MVC 网格验证总是失败
【发布时间】:2019-07-20 16:02:58
【问题描述】:

我用这个把头发扯掉了……!

我有一个 Telerik kendo mvc ui 网格小部件,使用内联网格编辑模式。当用户向网格添加新条目时(通过自定义下拉编辑控件),我希望它验证该条目是否已存在于网格中。

我有一个 MVC 控制器操作来执行此操作并相应地返回 True 或 False。这完美地工作。这是我正在使用的验证器 javascript 代码。

    (function ($, kendo) {
    $.extend(true, kendo.ui.validator, {
        rules: {
            bedQuantity: function (input, params) {
                if (input.is("[name='Quantity']") && input.val() <= 0) {
                    input.attr("data-bedQuantity-msg", "Quantity must be 1 or more");
                    return false;
                }
                return true;
            },
            bedExists: function(input, params) {
                if (input.is("[name='BedType']")) {
                    var model = {
                        PropertyId: @Model.Id,
                        BedTypeId: input.val()
                    };

                    var url = "/Property/ValidateBedTypeExists";
                    input.attr("data-val-bedExists-requested", true);
                    $.ajax({
                        type: "POST",
                        url: url,
                        traditional: true,
                        data: JSON.stringify(model),
                        contentType: "application/json; charset=utf-8",
                        success: function(data) {
                            return data === false;
                        },
                        fail: function(data) {
                            return false;
                        }
                    });
                } else {
                    return true;
                }
            }
        },
        messages: {
            bedQuantity: function (input) {
                return input.attr("data-val-bedQuantity");
            },
            bedExists: function(input) {
                return "This bed type already exists";
            }
        }
    });
})(jQuery, kendo);

无论 ajax 调用返回 true 还是 false,验证器始终将条目标记为无效。

【问题讨论】:

  • 我猜验证器在 ajax 请求之前完成。要么将您的请求标记为async: false(请参阅api.jquery.com/jQuery.ajax),要么将数据提交给控制器并让其验证。

标签: validation telerik kendo-grid kendo-asp.net-mvc


【解决方案1】:

您可以像这样根据需要为 kendoDropdownList 提供 html 属性

@(Html.Kendo().DropDownList()
    .DataValueField("")
                    .DataTextField("")

                        .Name("")
                       
                        .HtmlAttributes(new { required ="required" })
.OptionLabel("- Select a type - ")
.Filter(FilterType.Contains)

               

     )

试试这个..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多