<select @bind="Project.Supplier" @onchange="LoadProjectTypes">
<option value="0">Select Supplier</option>
@foreach (var supplier in ProjectSuppliers)
{
<option>@supplier.SupplierName</option>
}
</select>
@code{
private ProjectModel Project;
private List<ProjectSuppliersModel> ProjectSuppliers;
public void CreateProject()
{
//a function to insert the current project in the database
}
protected override void OnInitialized()
{
ProjectSuppliers = _db.GetProjectSuppliers();
}
Je veux obtenir le Project.Supplier sélectionné à partir de select-option, puis l'envoyer à la base de données. en même temps, je veux utiliser la fonction LoadProjectTypes. mais il y a une erreur dans l'élément select comme celle-ci : "L'attribut 'onchange' est utilisé deux fois ou plus pour cet élément". Comment puis-je le résoudre. Est-ce que j'ai raté quelque chose ? pour être plus clair : la fonction LoadProjectTypes affecte un autre élément de sélection pour afficher les types de projet qui sont liés uniquement au fournisseur de projet sélectionné en tant qu'options
Sous le capot, @bind utilise @onchange pour définir votre variable, vous ne pouvez donc pas utiliser les deux.
Je pense que vous n'avez généralement pas besoin d'une liaison bidirectionnelle pour les listes déroulantes, je recommande donc l'exemple "Unbound" dans ce qui suit. Mais si vous voulez VRAIMENT effectuer une liaison bidirectionnelle, vous pouvez alors attraper le changement de valeur dans une personnalisation get; set;
pour la variable au lieu d'essayer d'attraper l'événement réel.
@page "/onchange"
<select @onchange="HandleOnChangeUnbound">
<option disabled selected>Select an option</option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
<br />
@if (UnboundSelected is not null)
{
<div>@UnboundSelected</div>
}
<select @bind="BoundSelected">
<option disabled selected>Select an option</option>
<option>Option A</option>
<option>Option B</option>
<option>Option C</option>
</select>
@if (DisplayBound is not null)
{
<div>@DisplayBound</div>
}
@code {
string UnboundSelected { get; set; }
string DisplayBound { get; set; }
private string _boundSelected;
public string BoundSelected
{
get
{
return _boundSelected;
}
set
{
_boundSelected = value;
HandleOnChangeBound(value);
}
}
void HandleOnChangeUnbound(ChangeEventArgs args)
{
UnboundSelected = args.Value.ToString();
// Do DB stuff.
}
void HandleOnChangeBound(string value)
{
DisplayBound = value;
// Do DB stuff
}
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots