Je viens de migrer un projet Blazor de Core 3 Aperçu 6 à la prévisualisation 8 et je reçois maintenant cette erreur:
Les noms d'attributs n'ont pas pu être déduits de la "valeur de liaison" d'attribut de liaison. Les attributs de liaison doivent être du formulaire "Lier" ou "Valeur de liaison" avec leurs paramètres facultatifs correspondants tels que "Bind-Valeur: Event", "Bind: format", etc.
J'ai isolé le composant qui cause que cela se produise et que le code semble certainement bind-value
Définir selon les instructions du message d'erreur:
<TelerikDropdownList Data="@State.ContainerSizes"
ValueField=@nameof(ContainerSize.ContainerSizeId)
TextField=@nameof(ContainerSize.ContainerSizeName)
@bind-Value="@ContainerSizeIdNoNull"
>
</TelerikDropdownList>
J'ai essayé de supprimer le @
de @bind-Value
et changer la capitalisation @bind-Value
etc. mais tout en vain.
Que peut causer cela?
Il s'avère qu'il y a au moins deux causes de ceci:
La réponse s'avère que la nommée des composants de blazor est désormais sensible à la casse et je manquais une lettre majuscule dans "Telerikdropdownlist" qui devrait être TelerikDrop [~ # ~ # ~ # ~ # ~] propriétaire.
Le changement pour utiliser des noms sensibles à la casse est documenté ici et est également discuté ici . L'idée était de réduire les messages trompeurs, mais il a eu la conséquence d'introduire un autre, donc j'ai soulevé n problème pour cela sur le repo aspnetcore .
Vous obtiendrez également la même erreur si vous avez oublié ou supprimé le @using
Déclaration pour l'espace de noms du composant. C'est très facile à faire si vous utilisez Resharper, car il s'agit actuellement d'eux comme inutilisé et offrant de les supprimer.
Un bon moyen de vérifier si le compilateur a identifié correctement votre composant en tant que composant Blazor plutôt qu'une balise HTML consiste à vérifier le codage de la couleur des mots-clés. Ils auront la même couleur si les choses fonctionnent correctement (verte dans l'exemple ci-dessous):
Alors que si le nom ou l'espace de noms est faux, vous verrez un mélange de couleurs (noter que Data
et ValueField
sont maintenant une couleur différente de TelerikDropdownList
:
Je peux ajouter un autre piège non évident (au moins pour moi).
Complètement qualifiés de la composante et s'appuyant ensuite sur la déclaration à l'aide d'identifier les propriétés ne fonctionne pas. Cela a été ajouté par IntelliSense.
Exemple de ne pas fonctionner:
@using WebUI.Components.Modals
<WebUI.Components.Modals.WebUI.Components.Modals.AssetModal @bind-IsVisible="_assetDialogVisible" Asset="_selectedAsset"></WebUI.Components.Modals.WebUI.Components.Modals.AssetModal>
Version de travail:
@using WebUI.Components.Modals
<AssetModal @bind-IsVisible="_assetDialogVisible" Asset="_selectedAsset"></AssetModal>