Je suis en train d'ajouter l'attribut HTML dans la méthode d'extension pour le sélecteur de datetime de kendoComment ajouter htmlAttributes supplémentaires en extension pour Kendo DatePicker
public static DatePickerBuilder Readonly(this DatePickerBuilder builder, bool isReadOnly)
{
if (isReadOnly)
{
var dic = new Dictionary<string, object>();
dic.Add("readonly", "readonly");
builder.HtmlAttributes(dic);
}
return builder;
}
Le code ci-dessus fonctionne. Mais son dictionnaire de création inutile. La méthode HtmlAttribute
prend object
comme paramètre, comment puis-je l'utiliser pour ne pas avoir à créer de dictionnaire?
Note: Je ne veux pas utiliser la syntaxe de rasoir pour ajouter l'attribut lecture seule
Mise à jour 1
donc je résolu la question ci-dessus en modifiant le code comme ci-dessous
public static DatePickerBuilder Readonly(this DatePickerBuilder builder, bool isReadOnly)
{
if (isReadOnly)
{
var comp = builder.ToComponent();
comp.HtmlAttributes.Add("readonly", "readonly");
}
return builder;
}
Cependant, je dois pour m'assurer dans le rasoir j'appelle readonly()
méthode d'extension comme dernière méthode dans la chaîne.
Code du coup ne fonctionne pas
@(Html.Kendo().DatePickerFor(x => x.Deadline)
.Format("MM/dd/yyyy")
.Readonly(Model.IsEnabled)
.HtmlAttributes(new { data_inherit_value = Model.InheritDeadline }))
Je pense que son problème avec un contrôle de sélecteur de date Kendo. Il écrase les attributs html existants
Si je change l'ordre et que j'utilise readonly à la fin, le code fonctionne.
@(Html.Kendo().DatePickerFor(x => x.Deadline)
.Format("MM/dd/yyyy")
.HtmlAttributes(new { data_inherit_value = Model.InheritDeadline })
.Readonly(Model.IsEnabled))