Blazor conditionnel if instruction pour onclick

Sep 04 2020

J'ai un span qui devrait avoir un attribut onclick si le booléen IsActive est vrai. Sinon, la plage ne doit avoir aucun attribut onclick.

par exemple

@if (IsActive == true)
{
    <span @onclick="@(e => Go.DoSomething("please"))">
        @s.DisplayText
    </span>
}
else
{
    <span>
        @s.DisplayText
     </span>
}

N'y a-t-il pas un moyen d'éviter le code répété en utilisant un opérateur ternaire? par exemple

@(IsActive == true ? "add onclick method somehow?" : "")

Réponses

4 GaryChan Sep 05 2020 at 13:13

Vous pouvez faire ce qui suit.

<span @onclick="@(e => { if (IsActive) Go.DoSomething("please");})">
    @s
</span>

Une expression Lambda est ce que je pense que vous recherchez vraiment.

9 Umair Sep 04 2020 at 17:02

Une meilleure façon d'ajouter la condition IsActive == trueest dans la Go.DoSomethingméthode. Mais idéalement, j'aurais utilisé un bouton s'il était cliquable car nous pouvons ajouter un disabledattribut à un bouton, dans votre cas, vous pouvez ajouter la condition à l'intérieur de la onclickméthode.

Juste un conseil pour le bouton, vous pouvez simplement ajouter votre propriété booléenne c # dans cet attribut comme ceci:

<button disabled="@IsActive">Save</button>
2 devbf Sep 04 2020 at 18:36

Je veux juste ajouter quelque chose pour les personnes ayant un problème similaire:

Si vous avez plus de code HTML qu'une seule étendue et que vous en auriez besoin deux fois à cause d'une instruction if-else, je créerais un propre composant Blazor (par exemple MyComponent.razor) et utiliserais les paramètres du composant. De cette façon, vous n'avez pas beaucoup de code en double dans une instruction if-else.