BLAZOR: событие Onclick запускается автоматически при использовании модели базового класса компонентов - PullRequest
1 голос
/ 18 июня 2020

У меня есть страница с бритвой, как показано ниже. он наследует класс PaymentBase, который имеет код за кодами ..

@page "/payment"
@inherits PaymentBase

<h1>Payments</h1>

<button class="btn btn-primary" onclick="@GetList()">List all payments</button>

Функция GetList запускается автоматически после отображения страницы, а не при клике .. любая помощь, пожалуйста ??

Ответы [ 2 ]

1 голос
/ 18 июня 2020
onclick="@GetList()"

Приведенный выше код выполняется при визуализации вашего компонента, потому что инструкция @GetList() оценивается как выполнение GetList, результат которого присваивается атрибуту onclick элемента кнопки.

Примечание: onclick - это атрибут элемента кнопки, но @onclick - это атрибут директивы компилятора, инструктирующий компилятор создать EventCallback 'делегат', который инкапсулирует метод, имя которого предоставлено как значение для этого атрибута.

Всегда используйте шаблон: @onclick="<MethodName>"

Обратите внимание, что следующий код является допустимым, но не рекомендуется, поскольку он без необходимости объединяет C# и JavaScript: onclick="window.prompt('Enter you name...')"

Надеюсь, это поможет ...

1 голос
/ 18 июня 2020

Вам нужно передать функцию, а не вызывать функцию.

<button class="btn btn-primary" @onclick="GetList">List all payments</button>

Выполняя @onclick="GetList", вы передаете функцию onclick, выполняя @onclick="GetList()", вы вызываете GetList и передача возврата GetList() в onclick.

Также не забудьте добавить @ перед onclick.

...