Blazor conditional if statement สำหรับ onclick
ฉันมีช่วงที่ควรมีแอตทริบิวต์ onclick หากบูล IsActive เป็นจริง มิฉะนั้นช่วงไม่ควรมีแอตทริบิวต์ onclick
เช่น
@if (IsActive == true)
{
<span @onclick="@(e => Go.DoSomething("please"))">
@s.DisplayText
</span>
}
else
{
<span>
@s.DisplayText
</span>
}
ไม่มีวิธีหลีกเลี่ยงรหัสซ้ำโดยใช้ตัวดำเนินการที่เกี่ยวข้องหรือไม่? เช่น
@(IsActive == true ? "add onclick method somehow?" : "")
คำตอบ
คุณสามารถทำสิ่งต่อไปนี้
<span @onclick="@(e => { if (IsActive) Go.DoSomething("please");})">
@s
</span>
Lambda Expressionคือสิ่งที่ผมคิดว่าคุณกำลังมองหาจริงๆ
วิธีที่ดีกว่าในการเพิ่มเงื่อนไขIsActive == trueอยู่ในGo.DoSomethingวิธีการ แต่ตามหลักการแล้วฉันจะใช้ปุ่มถ้ามันสามารถคลิกได้เพราะเราสามารถเพิ่มdisabledแอตทริบิวต์ให้กับปุ่มได้ในกรณีของคุณคุณสามารถเพิ่มเงื่อนไขภายในonclickวิธีการได้
เพียงแค่เคล็ดลับสำหรับปุ่มคุณสามารถเพิ่มคุณสมบัติบูลีน c # ของคุณภายในแอตทริบิวต์ดังกล่าวได้ดังนี้:
<button disabled="@IsActive">Save</button>
แค่ต้องการเพิ่มบางอย่างสำหรับผู้ที่มีปัญหาคล้ายกัน:
หากคุณมีโค้ด HTML มากกว่าช่วงเดียวและคุณจะต้องใช้สองครั้งเนื่องจากคำสั่ง if-else ฉันจะสร้างส่วนประกอบ Blazor ของตัวเอง (เช่น MyComponent.razor) และใช้พารามิเตอร์ส่วนประกอบ วิธีนี้จะทำให้คุณไม่มีรหัสซ้ำกันมากใน if-else-statement