24 Nov to 01 Dec 2025: highlights of the new online resources that we published last week.
Blog: https://www.telerik.com/blogs/securing-apps-telerik-ui-aspnet-core-otp-control
Summary: You’ll implement one-time passcode (OTP/TOTP) verification in an ASP.NET Core app using the Telerik UI for ASP.NET Core OTP control, from configuring the control in Razor views to wiring server-side validation with ASP.NET Core Identity or a TOTP library. The article covers UX and security details—auto-advancing digit inputs, paste and accessibility, handling expiration and retries, and enforcing server-only validation, rate limiting, and secure secret storage—to build a reliable multi-factor authentication flow.
---------------------------------------------------------------------------------------------------------------------------------------------------------
17 Nov to 24 Nov 2025: highlights of the new online resources that we published last week.
Article: https://www.telerik.com/aspnet-core-ui/documentation/knowledge-base/chat-ai-integration
Summary: Integrate the Telerik UI for ASP.NET Core Chat with OpenAI or Azure OpenAI by handling the Chat send event, forwarding user messages to a server-side controller that calls the Chat Completions API, and returning the assistant’s reply as a Chat message. The article walks you through the Razor setup, controller/action implementation, secure API key handling, request/response models, role mapping (user/assistant), and basic error handling.
Blog: https://www.telerik.com/blogs/real-time-data-updates-telerik-ui-net-maui-grid
Summary: Learn how to implement real-time data updates in the Telerik UI for .NET MAUI Grid by binding to an ObservableCollection and models that implement INotifyPropertyChanged, so item additions/removals and per-cell changes propagate instantly. The article shows a timer-driven update loop and how to marshal background changes onto the UI thread, with practical guidance to keep frequent updates responsive.
---------------------------------------------------------------------------------------------------------------------------------------------------------
10 Nov to 17 Nov 2025: highlights of the new online resources that we published last week.
Article: https://www.telerik.com/aspnet-core-ui/documentation/ai-components-and-features
Summary: This article documents the AI Prompt and AI Chat components in Telerik UI for ASP.NET Core and shows you how to configure Tag/HTML Helpers and connect them to OpenAI or Azure OpenAI through ASP.NET Core endpoints. It covers setup, provider configuration, client/server APIs, streaming responses, attachments, context and message history, and content safety basics to help you implement AI features in your application.
Article: https://www.telerik.com/aspnet-core-ui/documentation/html-helpers/diagrams-and-maps/diagram/binding
Summary: You will bind the Telerik ASP.NET Core Diagram HTML Helper to your data so shapes and connections are generated from your schema. Configure DataSource and ConnectionsDataSource with model field mappings (Id, Text, X/Y for shape position; From/To for connections) and transport actions for server-side CRUD. The examples show remote binding, positioning, and handling data-bound events.
Article: https://www.telerik.com/aspnet-core-ui/documentation/html-helpers/diagrams-and-maps/diagram/razor-pages
Summary: This article shows how to use the ASP.NET Core Diagram HtmlHelper in Razor Pages: configure separate DataSources for shapes and connections with AJAX transport to page handlers (via Url.Page), map model fields (Id, From, To), and include the required Kendo UI scripts and styles. It provides .cshtml and PageModel code for Read, Create, Update, and Destroy operations and demonstrates adding anti-forgery tokens to the requests.
Feel free to check them out and share your thoughts!
The Telerik Team

1. Is it hard to understand the version numbers of our releases? If yes, what makes them hard to understand them?
2. Would semantic versioning (SemVer) of our releases make it easier to understand our version numbers and what's behind them?
3. If we go with SemVer, we might need to start with version 3000.0.0 as we currently use 2022.x.x. Please share your thoughts about this approach and ideas for what number versioning would work best for you.
Hi!
The ListView is breaking my web application, and I cannot make head or tail of the reason:
Kendo.Mvc.UI.ListView<T>.VerifySettings()
Also, you demos for the ListView are broken and the browser tab crashed after a while.
I need an urgent fix, as this is affecting the live application.

In our UI for ASP.NET Core R3 2020 (2020.3.915) release, the Column menu message of unsticking a column is "null".
This bug will be resolved in our next official release.
In the meantime, as a workaround, manually set the Unstick Column menu message:
.ColumnMenu(c => c.Messages(m => m.Unstick("Unstick Column")))It may be something I'm missing but I've built a multi-series chart with line and column data. Since it is possible for the values on the bar to be negative, the issue I'm seeing is the category label is repeated, one for each series. Since I am also using zoom, if I zoom in and then back out, the duplicated label is now gone. I should also note that if I remove the label position, currently set as start, it will render only one but then having negative values makes that look bad.
What am I missing to stop the axis duplication?
Attached is the initial render of the chart as coded below.
<kendo-chart name="chart" >
<chart-legend visible="true" position="Kendo.Mvc.UI.ChartLegendPosition.Bottom"></chart-legend>
<series>
<series-item type="Kendo.Mvc.UI.ChartSeriesType.Column" name="Amount" field="Amount" category-field="Period" color="#003399">
<labels visible="true" format="{0:c2}"></labels>
<tooltip visible="true" template="Date: #= dataItem.Period#<br />Amt: #= kendo.format('{0:c2}', dataItem.Amount) #"></tooltip>
</series-item>
<series-item type="Kendo.Mvc.UI.ChartSeriesType.Line" name="Total" field="RunningTotal" category-field="Period" color="#FF9900">
<labels visible="false" format="{0:c2}"></labels>
<tooltip visible="true" template="Date: #= dataItem.Period#<br />Total: #= kendo.format('{0:c2}', dataItem.RunningTotal) #"></tooltip>
</series-item>
</series>
<datasource type="Kendo.Mvc.UI.DataSourceTagHelperType.Ajax" server-operation="true" page-size="0">
<transport>
<read url="" />
</transport>
<sorts>
<sort field="Period" />
</sorts>
</datasource>
<category-axis>
<category-axis-item>
<labels position="ChartAxisLabelsPosition.Start" step="2">
<chart-category-axis-labels-rotation align="Kendo.Mvc.UI.ChartAxisLabelRotationAlignment.End" angle="315" />
</labels>
<chart-category-axis-item-title text="Date"></chart-category-axis-item-title>
</category-axis-item>
</category-axis>
<value-axis>
<value-axis-item>
<labels format="c0"></labels>
</value-axis-item>
</value-axis>
<zoomable>
<mousewheel lock="ChartAxisLock.Y" />
</zoomable>
</kendo-chart>I am converting a MVC table grid to a Telerik Grid. While looking at it, there are conditional columns. For example:
@if (Model?.GroupDetail?.IsMec == false)
{
<th class="text-secondary" style="width: 140px;">Group Info</th>
}
<th class="text-secondary">
@if (Model?.GroupDetail?.IsMec == false)
{
<text>Office</text>
}
else
{
<text>Role</text>
}
</th>I'm attempting to use the Kendo Upload control asynchronously to an MVC controller, which passes the file to a WebApi controller. The file is uploaded successfully, however when it returns to the MVC view, it reports that the file failed to upload with the error below. We are using Azure B2C for authentication:
"Access to XMLHttpRequest at 'https... b2clogin.com...' (redirected from 'https//localhost:7074/Files/UploadFile') from origin 'https://localhost:7074' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
Server response:
"Failed to load resource: net::ERR_FAILED"
The control is located in a partial view as part of a tab control on a CSHTML view. Here is the code for the upload control:
<div class="row">
<div class="col-md-8">
@(Html.Kendo().Upload()
.Name("uploadedFile")
.Multiple(false)
.Validation(v =>
{
v.AllowedExtensions(new string[] { ".csv" });
v.MaxFileSize(3145728);
})
.Async(a => a
.AutoUpload(false)
.Save("UploadFile", "Files")
)
.Events(e =>
{
e.Upload("onFileUpload");
})
)
</div>
<div class="col-md-4">
</div>
</div>
Here is the C# code for the MVC controller:
[HttpPost]
public async Task<ActionResult> UploadFile(IFormFile uploadedFile, string month, string year)
{
if (uploadedFile == null || uploadedFile.Length == 0)
return BadRequest("No file uploaded.");
var reportingPeriod = month + year;
using (var content = new MultipartFormDataContent())
{
if (uploadedFile.Length > 0)
{
var streamContent = new StreamContent(uploadedFile.OpenReadStream());
streamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(uploadedFile.ContentType);
content.Add(streamContent, "file", uploadedFile.FileName);
}
using (var response = await _client.HttpClient.PostAsync("/api/Files/loadbackdatedmonthlytrueupfile/" + reportingPeriod, content))
{
if (response.IsSuccessStatusCode)
{
// Kendo expects an empty string for success
return Content("");
}
else
{
return StatusCode((int)response.StatusCode, await response.Content.ReadAsStringAsync());
}
}
}
}
Here is the code for the WebApi controller:
[HttpPost("loadbackdatedmonthlytrueupfile/{reportingPeriod}")]{
//other logic here
return Ok(new { file.FileName, file.Length });
}
This is the info I received from Copilot:
How can I configure this upload control to return to the view without the error (attaching screenshot)?

when am used DropDownTree control i am used below sample format
@(Html.Kendo().DropDownTree()
.Name("ID")
.Label(label =>
{
label.Content("Select an ID...");
})
.DataTextField("Name")
.DataValueField("id").Value(12)
.HtmlAttributes(new { style = "width: 100%" })
.Filter(FilterType.Contains)
//.LoadOnDemand(true)
.DataSource(dataSource => dataSource.ServerFiltering(true).Read(read => read.Action("GetLocationListForDDTree", "Home") ) )
)
when enable loadondemand it works filter but value not show selected . if am command the loadondemand its show the selected value but filter not working . i need both options kindly advice this

I am trying to put an "action" menu on the toolbar of my grid. I have used a dropdownlist as is shown on your examples. The issue that I have with this is that action menus have a placeholder because all of the menu items have equal importance so no one menu item is the default. So I have rigged up menu like events with my javascript but it is still not ideal since the "placeholder" is a selectable list item. So then I had the brilliant idea of using telerik's menu within my custom client template. Easy peasy. Right? No, the dropdown or the .k-animation-container .k-animation-container-shown's z-order is 10002 and no matter how hard I try I can't get it to change and the dropdown is hidden by the grid header.
I was left to wonder if it is because it is limited to the confines of the toolbar. I am open to suggestions. I would hate to have to go back to the clunky dropdownlist option. Here's my code:
<style>