Hello, I am attempting to use your kendo captcha component for my web project when I ran into some technical difficulties related to using the kendo captcha in conjunction to a kendo wizard. I'm trying to run this captcha component as part of a step in a kendo wizard. After adding in my component with the necessary endpoints and functions into my kendo wizard, I get a blank screen with no errors or any endpoints being hit. I know the endpoints work for the captcha component because I'm using the baseline example on the kendo documentation for the Captcha overview into the very first step of my kendo wizard, and my kendo wizard loaded up just fine before adding in the captcha component. I assured the captcha component works just fine on a blank index page, so I'm suspecting the kendo wizard might be at fault but I would like some assistance in confirming that theory.
Can someone me an example of the kendo captcha being utilized in a kendo wizard for ASP.NET Core?
Hello, I am attempting to use your kendo captcha component for my web project when I ran into some technical difficulties invoking your API handler methods for the captcha component. I followed the instructions on the basic level from this url to help me use this component and even after copying exactly what's given here as a proof of concept I'm still getting errors related to my project not recognizing the Captcha api methods. I keep getting errors tat GetCaptcha() or GetCaptchaText() doesn't exist in the current context.
Originally I was attempting to use a captcha component as part of my Kendo Wizard before the user goes onto the next steps of the wizard, but ran into issues having it work with the wizard(which works fine so I know I'm successfully pulling from Kendo.UI's nuget package from what I'm seeing. Can you give me any insights as to what could be wrong or even better a fresh example case using Kendo ASP.NET core's captcha component embedded with a kendo wizard stepper.
// the template reference
.ClientDetailTemplateId("template-controls")
//the child grid definition, variable interpolation in the grid name and the toolbar, both work
<script id="template-controls" type="text/x-kendo-template">
@(Html.Kendo().Grid<ChildItem>()
.Name("GroupGrid_#=GroupID#")
.ToolBar(toolbar =>
{
toolbar.Template(
"<div class='edit-toolbar'>"
+"<button onclick='editChild(" + Model.ID + ",0,#=GroupID#, this)'>Edit</button>"
+ "</div>"
);
})
)
</script>
But when this code is migrated to ASP.NET Core using Tag Helpers, the variable interpolation in the toolbar does not occur. I would like to know whether this is an error in my code or a feature that is no longer supported.
//the template reference
<grid-detail-template>
<kendo-grid name="GroupGrid_${data.GroupID}">
<toolbar client-template-id="GroupGrid_Toolbar"></toolbar>
</kendo-grid>
</grid-detail-template>
//the child grid definition, variable interpolation works in the grid name , but the interpolation in toolbar do not
<script id="GroupGrid_Toolbar" type="text/html">
<div class='edit-toolbar'>
<button onclick=' editChild(@Model.ID,0,#=GroupID#, this)'>Edit</button>
</div>
</script>
with (data) {
$kendoOutput = '\n\n <div class=\'edit-toolbar\'>\n <button onclick=\'editChild(11941,0,' + (GroupID) + ', this)\' \n >\n ' + ($kendoHtmlEncode(data.GroupID)) + ' : ' + (GroupID) + ' Edit #\n </button>\n </div>\n ';
}
<toolbar>
<toolbar-button>
<toolbar-command-template>
// the variable interpolation placed here
</toolbar-command-template>
</toolbar-button>
</toolbar>
I have a .net core 8 web application, that has a grid that loads data via Ajax. When I edit a row, I'd like the `Contract` column to be a multi-select dropdown. When I edit a row, the control is rendered, but there is no data in it. I have set static data and the data does show up.
Here's my grid:
@(
Html.Kendo().Grid<ContractBenefitViewModel>()
.Name("ContractBenefitGrid")
.Columns(columns =>
{
columns.Bound(c => c.Id).Hidden(true);
columns.Bound(c => c.Contracts)
.ClientTemplate("#= displayContracts(data) #")
.EditorTemplateName("Contracts")
.Width(400)
.Filterable(false)
.Sortable(false);
columns.ForeignKey(c => c.BenefitId, (IEnumerable)ViewBag.Benefits, "Id", "DisplayName");
columns.Bound(c => c.Gl)
.Width(150);
columns.Bound(c => c.Comments);
columns.Bound(c => c.Active).Hidden(true);
columns.Bound(c => c.Deleted).Hidden(true);
columns.Command(command =>
{
command.Edit();
command.Destroy();
})
.HtmlAttributes(new { style = "text-align: center;" })
.Width(200);
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.ToolBar(toolbar =>
{
toolbar.Create();
})
.Pageable(pager =>
{
pager.Refresh(true);
pager.PageSizes([10, 20, 50]);
})
.Sortable()
.Filterable()
.NoRecords()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(10)
.ServerOperation(true)
.Events(events => events.Error("error_handler").RequestEnd("onRequestEnd('staticNotifications')"))
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.Contracts).DefaultValue(ViewBag.ContractId as List<ContractModel> ?? new List<ContractModel>());
model.Field(p => p.BenefitValue).DefaultValue(ViewBag.BenefitId);
model.Field(p => p.Comments);
model.Field(p => p.LastUpdatedBy).DefaultValue(ViewData[Literals.EmailKey]);
model.Field(p => p.Active).Editable(false).DefaultValue(Literals.Yes);
model.Field(p => p.Deleted).Editable(false).DefaultValue(Literals.No);
})
.Filter(f =>
{
f.Add(x => x.Active).IsEqualTo(Literals.Yes);
f.Add(x => x.Deleted).IsEqualTo(Literals.No);
})
.Read(read => read.Action("GetContractBenefits", "ContractBenefit").Data("forgeryToken"))
.Create(create => create.Action("CreateContractBenefits", "ContractBenefit").Data("forgeryToken"))
.Update(update => update.Action("UpdateContractBenefits", "ContractBenefit").Data("forgeryToken"))
.Destroy(destroy => destroy.Action("DeleteContractBenefits", "ContractBenefit").Data("forgeryToken"))
.Sort(sort =>
{
sort.Add(x => x.BenefitValue);
})
)
)
Here's the JavaScript
<script type="text/javascript">
function displayContracts(data) {
window.console.log('displayContracts()');
return $.map(data.Contracts, function (e) { return e.DisplayName; }).join(", ");
}
</script>
Here's my model
public class ContractBenefitViewModel
{
public long Id { get; set; }
public long BenefitId { get; set; }
[Display(Name = "Benefit")]
public string BenefitValue
{
get
{
var sb = new StringBuilder();
if (Benefit is not null)
{
sb.Append(Benefit.Value);
if (!string.IsNullOrWhiteSpace(Benefit.Gl))
{
sb.Append(" (");
sb.Append(Benefit.Gl);
sb.Append(")");
}
}
return sb.ToString();
}
}
[Display(Name = "GL Code")]
public string Gl => Benefit?.Gl ?? string.Empty;
[Display(Name = "Comments")]
[StringLength(ModelLiterals.CommentsLength)]
[MaxLength(ModelLiterals.CommentsLength)]
public string? Comments { get; set; }
public string Active { get; set; } = ModelLiterals.Yes;
public string Deleted { get; set; } = ModelLiterals.No;
public string LastUpdatedBy { get; set; } = string.Empty;
public BenefitModel? Benefit { get; set; } = null!;
[UIHint("Contracts")]
public IList<ContractModel> Contracts { get; set; } = new List<ContractModel>();
}
Here's my Editor Template (named Contracts.cshtml, in the EditorTemplates folder)
@model Lookups.ContractModel
<div style="width: 99%">
@(Html.Kendo().MultiSelectFor(m => m)
.DataValueField("Id")
.DataTextField("DisplayName")
.DownArrow()
.AutoClose(false)
.BindTo((IEnumerable<Lookups.ContractModel>)ViewData["contracts"])
)
</div>
Here's the Index and Get data methods in my controller
[HttpGet]
public async Task<IActionResult> IndexAsync()
{
Logger.LogDebug("{NameOf}()", nameof(IndexAsync));
var contracts = await Client.GetContractsAsync(); //Client is my API client library - it fetches data from my API
var benefits = await Client.GetBenefitsAsync();
ViewBag.Contracts = contracts;
ViewData["contracts"] = contracts;
ViewBag.Benefits = benefitFinancialSupports;
ViewBag.DefaultContractId = contracts?.FirstOrDefault()?.Id ?? -1;
ViewBag.DefaultBenefitId = benefits?.FirstOrDefault()?.Id ?? -1;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<JsonResult> GetContractBenefitsAsync([DataSourceRequest] DataSourceRequest request)
{
Logger.LogDebug("{NameOf}()", nameof(GetContractBenefitsAsync));
var stopwatch = Stopwatch.StartNew();
try
{
if (!ModelState.IsValid) return Json(InvalidModelStateMessage);
var models = await Client.GetContractBenefitsAsync();
var viewModels = models
.Where(x => x is { Benefit: not null, Contract: not null })
.GroupBy(x => x.BenefitId)
.Select(g => new ContractBenefitViewModel
{
BenefitId = g.Key,
Benefit = g.First().Benefit,
Contracts = g.Select(x => x.Contract!).Distinct().ToList(),
Id = g.First().Id,
Comments = g.First().Comments,
Active = g.First().Active,
Deleted = g.First().Deleted,
LastUpdatedBy = g.First().LastUpdatedBy
})
.ToList();
return Json(await viewModels.ToDataSourceResultAsync(request));
}
catch (Exception ex)
{
Logger.LogError(ex, "{NameOf}()", nameof(GetContractBenefitsAsync));
return Json(new { success = false, message = ex.Message });
}
finally
{
stopwatch.Stop();
Logger.LogInformation("**** {NameOf} took [{Elapsed}]", nameof(GetContractBenefitsAsync),
stopwatch.Elapsed);
}
}
I should mention that I store the data one ContractId with one BenefitId (in a Mapping table), so when I return data via the `Client.GetContractBenefitsAsync()` call, it returns a List of 1-to-1 records, and I group them so I get a single Benefit with all Contracts that are associated with it (hence the Linq GroupBy call to build my ViewModel). This is how I want to present it to my users, so they can select as many Contracts as they want in the UI, and behind the scenes I'll turn into a 1:1 association. I'm just having trouble getting my data (the Contracts Multi Select) to display data. Am I missing something or is there another way to do this?
Good afternoon,
I have a FileManager that I want to perform server-side checks when directories or files are renamed or deleted. For instance, the directory has files that must be kept.
I was hoping to use the command event:
command - API Reference - Kendo UI FileManager - Kendo UI for jQuery
Which mentions:
How, in my delete or update server methods, do I force an e.status of fail, and e.response text explaining why the delete or update was rejected, so I can handle that in the client Command event?
I can see that I could throw an error and then capture that in the Error event, but is it possible to do similar with the Command event? The scenario I'm describing isn't really an error, just some validation that failed.
Kind regards,
Richard
I am getting an error in telerik.ui.for.aspnet.core when I tried to built the code through Azure pipelines. This is the error:
D:\AgentAzServices\_work\9\s\NewHirePackage.csproj : error NU1301: The local source 'C:\Users\e245737\AppData\Roaming\Telerik\Updates\telerik.ui.for.aspnet.core.hotfix.2023.3.1114.commercial\wrappers\aspnetcore\Binaries\AspNet.Core' doesn't exist.
this is the second error, I am getting:
Error NU1301: The local source 'C:\Users\e245737\AppData\Roaming\Telerik\Updates\telerik.ui.for.aspnet.core.hotfix.2023.3.1114.commercial\' doesn't exist.
do I need to upgrade the "Telerik.UI.for.AspNet.Core" to higher version? Please see the attached picture, I dont see any higher version.
Thank you.
Kendo Treelist with Column Menu filter, Dropdowns and DatePicker is not showing fully. Its hiding and while scrolling also not working properly
https://netcorerepl.telerik.com/wzOWuMaW50DO1PTf30
Hi Team,
Can we use 2020.1.114.440 kendo MVC dll in .net core application I am using same in .net framework 4.7.2.
Thanks & Regards
Amar Deep
It was my understanding that the Kendo editor is only designed to work with the content between the <body></body> tags and strip off <html>, <head>, and the <body> tags themselves but while I do see that those tags are indeed left out in the dialog editor a <meta> tag that I have in my <head></head> section is still being rendered (ref attached screenshot) which is not desired to the extent that I wish to re-apply the standard "format" to the saved body content changes that re-applies the standard prefix/suffix tags we use to define HTML formatted email templates (Ref below) where the {0} placeholder would represent the true editor content changes for the email template being posted back from client to be saved. However while this works I'm getting the original <meta> tag as part of the "content" when my expectation is, that because it is embedded in the <head> tag that it would get stripped out when the <body></body> internal content is rendered on the client. I am currently using the 2025.1.227 build of Telerik UI for ASP.NET Core.
private const string EmailTemplateFormat = "<html><head><meta content=\"text/html; charset=windows-1252\" /></head><body style=\"padding: 0; margin: 0;\">{0}</body></html>";