onclick에 대한 Blazor 조건부 if 문

Sep 04 2020

IsActive bool이 true이면 onclick 속성이 있어야하는 범위가 있습니다. 그렇지 않으면 스팬에 onclick 속성이 없어야합니다.

예 :

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

삼항 연산자를 사용하여 반복되는 코드를 피할 수있는 방법이 없습니까? 예 :

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

답변

4 GaryChan Sep 05 2020 at 13:13

다음을 수행 할 수 있습니다.

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

람다 식 난 당신이 정말 찾고있는 생각이다.

9 Umair Sep 04 2020 at 17:02

조건을 추가하는 더 좋은 방법 IsActive == true은 Go.DoSomething메서드에 있습니다. 그러나 이상적으로는 버튼에 disabled속성을 추가 할 수 있기 때문에 클릭 가능한 경우 버튼을 사용했을 것 입니다. 귀하의 경우에는 onclick메서드 내부에 조건을 추가 할 수 있습니다 .

버튼에 대한 팁입니다. 다음과 같이 해당 속성 내에 C # 부울 속성을 추가하면됩니다.

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

비슷한 문제가있는 사람들을 위해 무언가를 추가하고 싶습니다.

단일 범위보다 더 많은 HTML 코드가 있고 if-else- 문으로 인해 두 번 필요한 경우 자체 Blazor 구성 요소 (예 : MyComponent.razor)를 만들고 구성 요소 매개 변수를 사용합니다. 이렇게하면 if-else-statement에 중복 코드가 많지 않습니다.