2013-07-03 4 views
3

В моем ASP.NET MVC приложения я добавил проверки атрибутов моей модели:JQuery Validate игнорировать файлы локализации (ASP.NET MVC)

public class MyModel 
{ 
    [Required] 
    public string Name { get; set; } 
    ... 
} 

Я также добавил файлы локализации на мой HTML:

<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/localization/messages_de.js"></script> 

Однако сообщения проверки еще не переведены, и я вижу только английские сообщения. Сгенерированный HTML выглядит следующим образом:

<input data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value=""> 

Как я могу сделать локализации работает с ASP.NET MVC, не создавая свои собственные переводы на стороне сервера? Я хотел бы использовать существующие javascript-локализации.

ответ

0

Сценарий, который вы включили в свой HTML, содержит сообщения об ошибках для плагина проверки jQuery. Обязательным атрибутом аннотации данных, который вы присвоили свойству модели, является система проверки ASP.NET.

Несмотря на то, что система аннотации данных обеспечивает проверку на стороне клиента, сообщения об ошибках, которые она использует, прикрепляются к атрибутам разметки на сервере, используя систему локализации ASP.NET.

Предполагая, что вы можете найти сообщения об ошибках, которые будут служить вашей цели в файле сообщений jquery, одним из способов их использования было бы использовать атрибут ErrorMessage атрибутов DataAnnotation, вставлять ключ сообщения для этого свойства, а не само сообщение об ошибке , Затем вы можете добавить функцию jQuery к вашему представлению, которая будет отображать ключ из соответствующего атрибута недействительного элемента (например, требуемого значения данных) для поиска и замены содержимого атрибута на строку, полученную из файла сообщения.

Так (в общих чертах):

public class MyModel 
{ 
    [Required(ErrorMessage="messageKey")] 
    public string Name { get; set; } 
    ... 
} 

$(document).ready(function() { 
    var elem = $("input[data-val-required]"); 
    elem.val(function lookupMessage() { 
     var key = elem.val(); 
     var message = dosomethingWith(key); // lookup value 
     return message; 
    }); 
});