'Invalid Template' Error Occurs When Using Localization and Templates
Environment
Product | Progress® Telerik® UI for ASP.NET Core |
Description
My UI for ASP .NET Core project uses a Kendo UI Grid with templates and localization of the resource files. The Kendo UI HTML helper generates hash tag symbols, such as Иден
, which cause an error.
Error Message
Uncaught Error: Invalid template:'....'
Cause
ASP.NET Core encodes all Unicode characters except the ones from the BasicLatin
range. The encoded characters are similar to 汉
. The hash sign (#
) in the encoded character representation has a special meaning inside the Kendo UI templates and breaks their syntax, which results in throwing the Invalid template
error.
Solution
Widen the character ranges that are treated as safe by the ASP.NET Core encoding mechanism. This approach will prevent the framework from encoding your localized strings.
- Open
Startup.cs
file and locate theConfigureServices
method. -
Add the following line:
services.AddSingleton(HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic }));
Inside the code line, replace
UnicodeRanges.Cyrillic
with the ranges which include all Unicode characters that you use in your localization files. For more information, refer to the relevant table in the Unicode Character Code Charts list. The final result should be similar to the following code snippet:public void ConfigureServices(IServiceCollection services) { // Add framework services. services .AddMvc() .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); services.AddSingleton(HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic })); services.AddKendo(); }