### Bug report
When Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package is installed in Telerik UI for ASP.NET Core application, it throws an exception:
FileNotFoundException: Could not load file or assembly 'Microsoft.DotNet.InternalAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
### Reproduction of the problem
1. Create Telerik UI for ASP.NET Core MVC application (.NET Core version 6.0).
2. Install Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package (version 6.0.5).
3. Turn on the Razor Runtime Compilation:
//Program.cs file
// Add services to the container.
builder.Services.AddControllersWithViews()
.AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver())
.AddRazorRuntimeCompilation();
4. Run the application and review the exception.
Attached is a runnable sample for reproduction.
### Workaround
Install Microsoft.DotNet.InternalAbstractions NuGet package (version: 1.0.0)
### Environment
* **Kendo UI version: 2022.2.510
* **jQuery version: 1.12.4
* **Browser: [all]
It would be useful to have a grid operator for "IN" conditions. Right now we only have 2 options for an OR without having to use a custom filtering and custom clearing functions.
We have a lot of data that needs to be filtered that is not sequential. For example purposes:
Given that a customer has a standing purchase order for parts over time.
Given that serial numbers on said parts will not be sequential and may not be even be similar enough for wildcards (if that feature is provided.)
Given that we need to filter grid data to retrieve customer number, purchase order and a set of serial numbers, we need the equivalent of:
SELECT * FROM testdatatable WHERE customer = '#####' AND purchaseorder = '#####' AND serialnumber IN ('abciqwe', 'cid235', 'sn34087', 'hpk2679');
which would be WHERE WHERE customer = '#####' AND purchaseorder = '#####' AND (serialnumber = 'abciqwe' OR serialnumber = 'cid235' OR serialnumber = 'sn34087' OR serialnumber 'hpk2679');
So basically I would like to have the ability to have multiple OR statements and the operand could be 'contains' or 'not contains' as that would probably work better than "equal".
Our immediate need is for the MaskedTextBox.
And have modified my program.cs to add:
// Add services to the container.
builder.Services.AddControllersWithViews()
// Maintain property names during serialization. See:
// https://github.com/aspnet/Announcements/issues/194
.AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver());
// Add Kendo UI services to the services container"
builder.Services.AddKendo();
I copied the code from your demo into the ASP.net 6.0 Page above.
I added data properties to the Index.cshtml.cs model and changed the Value property on each Kendo object to point them. That works fine
The issue is that the formatting is not applied:
I know you can query the client side JavaScript version using
kendo.version
It would be handy if you could query the dll assembly version or cdn url so the URLs can automatically match the dll used in the solution especially when nuget is used to update it currently I work around this using:
@{ var version = typeof(Kendo.Mvc.KendoServices).Assembly.GetName().Version;
string kendoCDN = $"//kendo.cdn.telerik.com/{version.Major}.{version.Minor}.{version.Build}";}
<link href="@Url.Content(kendoCDN + "/styles/kendo.bootstrap-v4.min.css")" rel="stylesheet" type="text/css" />
When using th-TH culture and setting a valid name for a component an exception InvalidOperationException: Name cannot contain spaces.
is thrown.
An InvalidOperationException: Name cannot contain spaces.
is thrown.
Exception should not be thrown and components should be rendered as expected.
Hi,
Will the TagCloud control from the ASP.NET AJAX package ever be ported to the ASP.NET Core package?
I use this on faculty profiles and it is a required component if I ever want to move them to Core.
Thanks,
Charlotte McClellan
There is a new CheckBoxTagHelper to support the new rendering, but the public ModelExpression For { get; set; } property is missing.
Steps to reproduce
Current Behavior
The value in the Html Input is restored but not the value of the Kendo Input. The same behavior applies for Kendo NumericTextBox, etc.
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2021.3.1207/styles/kendo.bootstrap-v4.min.css" />
<script src="https://kendo.cdn.telerik.com/2021.3.1207/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2021.3.1207/js/kendo.all.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2021.3.1207/js/kendo.aspnetmvc.min.js"></script>
</head>
<body>
<form>
<div>
<label for="HtmlInput">Html Input</label>
<input type="text" id="HtmlInput" name="HtmlInput">
</div>
<div>
<label for="KendoInput">Kendo Input</label>
@(Html.Kendo().TextBox ().Name ("KendoInput"))
</div>
</form>
</body>
</html>
If you use "Edit in REPL" button in any demo that uses `kendoConsole.log()`, it will throw an error that the kendoConsole doesn't exist (you can use the Upload > Events demo as a quick example).
This is happening because the kendoConsole is only a part of demos.telerik.com pages that does not get copied over to the REPL or Dojo because it is irrelevant to the demo itself. The fix is to change all kendoConsole.log() instances to console.log()
That said, I am opening this bug report so that the dev team can consider ways to handle the "edit in" scenarios.
Thank you,
Arthur
### Bug report
The localization script "kendo.messages.en-GB.min.js" throws a type error in the browser console - "Cannot read properties of undefined (reading 'messages')".
### Reproduction of the problem
1. Include the culture script "kendo.culture.en-GB.min.js" on the page (locally or by using the Kendo CDN service).
2. Include the localization script "kendo.messages.en-GB.min.js" (locally or by using the Kendo CDN service).
3. Set the culture to "en-GB".
4. An error is logged in the browser console: "Cannot read properties of undefined (reading 'messages')".
A Dojo sample for reproduction: https://dojo.telerik.com/aJokESEP
### Environment
* **Kendo UI version: 2021.3.1109
* **jQuery version: 1.12.4
* **Browser:** [all]
### Bug report
The Button TagHelper is missing in the Visual Studio 2022 IntelliSense.
### Reproduction of the problem
Create a Telerik UI for ASP.NET Core application (.NET 6) and try to insert a Button TagHelper by using the IntelliSense. It appears that not all available Telerik UI components are available in the suggested list.
### Environment
* **Visual Studio Professional 2022 version: 17.1.0 Preview 1.1
* **Kendo UI version: 2021.3.1109
* **jQuery version: 1.12.4
* **Browser: [all]
I have an editable kendo grid in which I have a date field. When I choose a date through the calendar for example: 26.12.2021 on post the model binder parses the date correctly.
If I manually enter the date in the cell the model binder parses the date as it was not an UTC and since my time zone is +2h it comes in the controller as 25.12.2021 22:00
(see the attached files)
Inside my startup.cs I have defined JsonOptions like this:
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
});
In the Configure method:
var supportedCultures = new[] { new CultureInfo("bg-BG") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("bg-BG"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
Layout.cshtml
<script src="~/lib/kendo/js/cultures/kendo.culture.bg-BG.min.js"></script>
<script>
kendo.culture("bg-BG");
</script>
The DatePicker's popup has a CSS min-height property set that causes it to sometimes have an empty blank space at the bottom.
Review another occurence.
There should be a blank space in the DatePicker's popup.
Kendo dialog structure doesn’t use Aria landmarks properly for buttons - this leads to a validation error
The pager control's select box renders role="listitem" but the parent is missing role="list" - this leads to a validation error
Listviews will render role="list" even when empty - this leads to a validation error
Kendo grids use 2 tables (one for header and one for the data) which means that there are no role="cell" assigned to any of the headers - this leads to a validation error
Scrollable grids are missing a tabindex="0" to allow for keyboard navigation - this leads to a validation error
this form doesn't have Core 2, 2.1, 3.0, 3.1 or 5 in the .Net Framework drop down. Just gonna pick 4.8 even though it doesn't apply. I am using core 5.
Hi Telerik Team
Wil younot implement the LightBox also as a a asp.net core component ?
We think it will be usefull. of course we could also implement in window component but its not the same
Telerik Web UI LightBox Overview Demo | Telerik UI for ASP.NET AJAX
Best regards
Murat Zürich
A DataSource defined using TagHelpers with disabled serverPaging sets default pageSize:
<datasource type="DataSourceTagHelperType.Ajax" server-filtering="true" server-paging="false">
<transport>
<read url="@Url.Page("Index", "Read")" data="forgeryToken" />
</transport>
<schema data="Data">
<model id="OrderID">
<fields>
<field name="ShipName" type="string"></field>
</fields>
</model>
</schema>
</datasource>
generates the following initialization script:
{"dataSource":{"page":1,"pageSize":20,"schema":{"model":{"id":"OrderID","fields":{"ShipName":{"type":"string"}}},"data":"Data","errors":"Errors","total":"Total"},"serverAggregates":true,"serverFiltering":true,"serverGrouping":true,"serverPaging":true,"serverSorting":true,"transport":{"read":{"url":"/?handler=Read","data":forgeryToken}},"type":(function(){if(kendo.data.transports['aspnetmvc-ajax']){return 'aspnetmvc-ajax';} else{throw new Error('The kendo.aspnetmvc.min.js script is not included.');}})()}
with default pageSIze set.
Initializing using jQuery works as expected:
dataSource: {
type: "aspnetmvc-ajax",
serverPaging: false,
serverFiltering:true,
transport: {
read: {
url: "@Url.Page("Index", "Read")",
data: forgeryToken
}
},
schema: {
model: {
id:"OrderID"
},
data: "Data",
total:"Total"
}
}
The "page" and "pageSize" values are set, which results in only 20 items being displayed, even though more are returned by the "read" action.
The "page" and "pageSize" should not be set.
Issue
Using any overload of ToDataSourceResult(Async) with a DataSourceRequest containing filter descriptors on an IQueryable provided by Entity Framework core 2.x, causes Entity Framework's "Query cache" to fill up for different filter values, leaking memory in the process. This is caused by using Expression.Constant in the generated expression trees for a DataSourceRequest's FilterDescriptors. Refer to https://github.com/dotnet/efcore/issues/14859 for more details about why this leaks memory.
Since Entity Framework's cache is always missed for new filter values, performance is also degraded due to this issue.
The issue is not present when using Entity Framework core 3 or greater. Apparently using Expression.Constant is not an issue on these version.
I have attached a minimal working example that illustrates the memory leak.
Fix
This issue can be fixed by changing FilterDescriptorExpressionBuilder.CreateValueExpression to not return a ConstantExpression, but a MemberExpression instead. Entity Framework 2.x will correctly parameterize the MemberExpression, causing the query cache to be hit correctly for queries that only differ in parameter values. It won't parameterize ConstantExpressions. Refer to https://stackoverflow.com/a/60516780/147993 for an example of generating a MemberExpression instead of a ConstantExpression.