### Bug report
When the TreeList is set up for Popup editing, the "required" validation triggers immediately when the Popup form is opened.
### Reproduction of the problem
1) Create a Popup editable TreeList.
2) Add the DataAnnotation [Required] attribute to any of the Model properties.
3) Click the built-in "Add new record" command.
4) The editor of the required field is automatically focused and the validation triggers immediately.
The behavior can be observed in the TreeList Popup Editing demo: https://demos.telerik.com/aspnet-core/treelist/editing-popup
### Expected/desired behavior
The validation must trigger on blur, as in the jQuery demo.
### Environment
* **Telerik UI for ASP.NET Core version: 2025.2.520
* **Browser: [all]
Hi,
I'm following this document to load data into the grid view control using local data binding.
https://demos.telerik.com/aspnet-core/grid/local-data-binding
I'm not sure this is an issue or expected grid view behavior when using local data binding. If loader-type and no-records are added. What happens is when there are no records, the Skeleton is still displayed and the no-records template is not displayed (see the attached image)
<kendo-grid mobile="Disabled" name="Grid" loader-type="GridLoaderType.Skeleton">
<columns>
<column field="ProductName" title="Product Name">
</column>
<column field="UnitPrice" format="{0:C}" title="Unit Price" width="130">
</column>
<column field="UnitsInStock" title="Units In Stock" width="130">
</column>
<column field="Discontinued" title="Discontinued" width="130">
</column>
</columns>
<datasource type="DataSourceTagHelperType.Ajax" page-size="20" server-operation="false" data="@Model">
</datasource>
<filterable enabled="true">
</filterable>
<scrollable enabled="true" />
<pageable enabled="true">
</pageable>
<sortable enabled="true" />
<no-records template="string HTML template, automatically centered" />
</kendo-grid>
Thanks
Bob
Consider the use of TextWriter async methods for the HTML Helpers, for example the WriteInitializationScript methods. In certain scenarios the use of the synchronous methods causes an exception: System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.
This can be resolved by explicitly enabling synchronous operations
services.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
though synchronous operations have been disabled by default at framework level as of .NET 3.0.
### Bug report
When dragging and dropping a file into a specified FileManager folder, the Upload request triggers twice.
### Reproduction of the problem
1. Open the FileManager Demo: https://demos.telerik.com/kendo-ui/filemanager/index
2. Open the browser's Network tab.
3. Drag and drop a file into the FileManager.
4. Two Upload requests are triggered one after another.
### Expected/desired behavior
When uploading a single file with drag & drop, a single Upload request must trigger. When using the default upload button to upload a file, a single request triggers as expected.
### Environment
* **Kendo UI version: 2024.4.1112
* **jQuery version: 3.7.1
* **Browser: [all]
Currently, the Content function for Steps in a Wizard only accepts a string value (see API here).
This means that in order to add a partial view (bound to the current model and its properties), the most straightforward way I could find was to put the partial view (and any wrappers) in its own file and add an extension method "ToHtmlString()". For example:
@model MyModel
@(Html.Kendo().Wizard().Steps(step => {
step.Add().Content(Html.Partial("~/Path/To/View/Wrapper.cshtml", Model).ToHtmlString());
})
using Microsoft.AspNetCore.Html;
using System.IO;
public static class HtmlContentExtensions
{
public static string ToHtmlString(this IHtmlContent htmlContent)
{
if (htmlContent is HtmlString htmlString)
{
return htmlString.Value;
}
using StringWriter writer = new();
htmlContent.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
return writer.ToString();
}
}
@model MyModel
@(Html.Kendo().TabStrip().Items(tabstrip => {
tabstrip.Add()
.Content(@<div id="@Model.TabContainer" class="myTabWrapperClass">
@await Html.PartialAsync("~/Path/To/View.cshtml", Model)
</div>);
})