2013-07-03 27 views
3

在我添加了驗證屬性,以我的模式我的ASP.NET MVC應用程序:jQuery驗證忽略本地化文件(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驗證插件的錯誤消息。您使用裝飾模型屬性的Required data annotation屬性是ASP.NET驗證系統。

儘管數據註釋系統確實提供了客戶端驗證,但它使用的錯誤消息是使用ASP.NET的本地化系統附加到服務器標記中的屬性的。

假設您可以在jquery消息文件中找到可用於您的目的的錯誤消息,那麼使用它們的一種方式是使用DataAnnotation屬性的ErrorMessage屬性爲屬性注入消息密鑰而不是錯誤消息本身。然後,您可以向您的視圖添加一個jQuery函數,該函數將從無效元素的相關屬性(例如data-val-required)中選取關鍵字,以查找並用從消息文件中檢索的字符串替換屬性的內容。

所以(輪廓):

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; 
    }); 
});