New to Telerik UI for ASP.NET Core? Download free 30-day trial

Invalid Template Error When Using Localization and Templates

Environment

Product Progress® Telerik® UI for ASP.NET Core

Description

My UI for ASP .NET Core project uses a 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.

  1. Open Startup.cs file and locate the ConfigureServices method.
  2. Add the services.AddSingleton(HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic })); line. Inside that 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();
    }
    

More ASP.NET Core Grid Resources

See Also

In this article