改变文本全球化“字段X必须是数字。”在KendoGrid中使用View Model获取非int值

时间:2014-10-06 14:49:02

标签: kendo-ui kendo-grid viewmodel globalization

我使用 Kendo UI 2013.2.716 ,特别是 KendoGrid ,C#,Visual Studio 2010,我需要改变消息的全球化&#34 ; 字段X必须是数字。"如图所示,并用另一种语言。 The field x must be a number text.

如果我检查Chrome中的元素,我会看到: enter image description here

我试过这样做:

视图模型

namespace Test.Models
{
   public class TestModel 
   {
     ...
     [DisplayName("Pos")]        
     [IsNumberAttribute(ErrorMessage = "Ingrese un número.")]
     public int Pos { get; set; }
   }
}

namespace Test.Models.CustomValidator
{
    [AttributeUsage(AttributeTargets.Property)]
    public class IsNumberAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            try
            {
                int numeroTemp;
                bool esNumero = int.TryParse((string)value, out numeroTemp);
                return esNumero;
            }
            catch (Exception)
            {
                return base.IsValid(value);
            }
        }
    }    
}

但它不起作用,仍然是英文:(

在我看来,我有这个:

@(Html.Kendo().Grid<Test.Models.TestModel>(Model)
        .Name("titulo")
        .Columns(columns =>
        {
            ...                
            columns.Bound("Pos").Filterable(false);
            columns.Bound("Edad").Title("Edad").ClientTemplate("#=window.TestMantenedor.Valida(edad)#").Width(500);
        })
        .ToolBar(toolbar =>
        {
            toolbar.Create().Text("Agregar");
            toolbar.Save().SaveText("Modificar").CancelText("Cancelar");
        })
        .Editable(editable =>
        {
            editable.DisplayDeleteConfirmation(false);
            editable.Mode(GridEditMode.InCell);
        })
        .Scrollable()                      
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(20)
            .Batch(true)
            .Model(model =>
            {
                ...
                model.Field(p => p.Edad).DefaultValue(true);
            })
            .Create("Create", "Test", new { id = id })               
            .Events(events => events.Error("error_handler"))
            .Events(events => events.RequestEnd("success_handler"))
        )
        .Filterable(filterable => filterable.Messages(messages =>
            {
                messages.Info("Mostrar plantillas en estado");
                messages.Filter("Filtrar");
                messages.Clear("Borrar");
                messages.IsTrue("Valido");
                messages.IsFalse("No valido");
            })
        )
        .Pageable(p => p
            .Messages(m => m
            .Display("Mostrando {0}-{1} de {2} registros")
            .Empty("No se encontraron registros")
            .First("Ir a la primera página")
            .Last("Ir a la última página")
            .Next("Ir a la página siguiente")
            .Previous("Ir a la página anterior")
            )
        )
)

任何帮助?

1 个答案:

答案 0 :(得分:0)

最后,在尝试了很多东西3天后,也尝试了

的解决方案

How to change 'data-val-number' message validation in MVC while it is generated by @Html helper

@(Html.Kendo().Grid<Test.TestModel>(Model)
        .Name("listado")
        .Columns(columns =>
        {
          columns.Bound("idElementColumn").Filterable(false);
          ...
        }

至少,在View I的最后我说:

<script type="text/javascript">
        $("#listado").on("click", function (e) {
            $(".k-grid #idElementColumn").attr('data-val-number', 'Ingrese un número.');
        });    
</script>