|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Здравствуйте! У меня приложение blazor server по типовому образцу. В нем я создал свой компонент "GoodStock, который загружает данные из базы данных используя метод сервиса, который делает выборку по параметрам. Я так же определил компонент радиобатн. Нужно , что бы по клику на этой радиобатн происходила загрузка компонента GoodStock и при этом в метод сервиса передавался параметр этой радиобатн(в данном случае "0" или "1"). Как это сделать, ведь компонент радиобатн и компонент GoodStock не являются друг к другу дочерним и родительским? Может быть мой вопрос непонятен и нужны какие то пояснения или код? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 12:36 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp компонент радиобатн и компонент GoodStock не являются друг к другу дочерним и родительским? В итоге в разметке родительского компонента ты пишешь Код: html 1. 2. 3.
Соответственно, по клику на радиобатоне родительский компонент устанавливает своё поле _showGoodStock=true, а в компоненте GoodStock у тебя должен быть [Parameter], который примет значение радиобатона. Как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 12:42 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp GoodStock, который загружает данные из базы данных используя метод сервиса ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 12:46 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Shocker.Pro, Спасибо, попробую разобраться! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 12:55 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Я вывел в родительский компонент булеву переменную , которая меняется в зависимости от положения switch. Но теперь проблема в том, что этот компонент _mainLayout и дочка передается через @body. И что теперь делать не знаю, читаю документацию . Если кто знает- подскажите!! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 21:45 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp, Всё. Уперся в стену. Пошел angular учить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:17 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp, я тоже также поступил когда разбирался с ASP MVC. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:49 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ну вот я передал параметр в дочерний компонент(из сестринского в сестринский через родительский). Но теперь в родительском компоненте я должен кликнуть радиобатн и параметр должен поменяться. Как сделать, чтобы метод сервиса выполнился с новым параметром и компонент перезагрузился? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 12:00 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Зачем нужно делать так, чтобы компонент перезагружался??? Если нужно обновить экран, есть StateHasChanged Если нужно переинициализовать компонент - вынеси всю инициализацию в отдельный метод и вызывай его например при смене параметра (set {...}) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 14:43 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Shocker.Pro, Простите, А как вызвать метод внутри компонента при смене параметра? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 17:55 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp Простите, А как вызвать метод внутри компонента при смене параметра? Только с асинхронностью надо смотреть, что там в задаче. Если GetGoods - быстрый метод, можно просто вызвать его синхронно. Если там IO - лучше запустить задачу без ожидания, а по окончании InvokeAsync(StateHasChanged). (правда, непонятно, почему он тогда сам не является асинхронным, но это другой вопрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 18:13 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp Shocker.Pro, Простите, А как вызвать метод внутри компонента при смене параметра? Вроде нашел статью про {set} ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 18:32 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp Вроде нашел статью про {set} ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 18:38 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Shocker.Pro, Я учил. Честно. Поставьте тройку пожалуйста)))) Просто не сталкивался с такого рода событиями. Это мне костыль какой то напоминает. Думаю, может у меня что то в архитектуре не правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 14:50 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Причем тут "такого рода события"? Это базовые основы типов в .NET, не имеющие отношения к Blazor Я структуру твою в целом не вижу, но почему ты считаешь это костылем - не понимаю, это обычный способ применения свойств в .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 16:18 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Shocker.Pro, У меня знания слабые. Я делаю себе приложение для магазина одежды . Десктопная часть уже готова на WF, теперь интернет магазин стряпаю потихонечку. Хочется вроде, что бы были компоненты. Индекс - родительский. Дочерние: 1-меню с радиокнопкой выбора пола. 2-карточки товаров. остальное меню категорий еще далеко впереди. Мне не нравится, что приходится 1 событие тащить через два компонента вверх и вниз. Ну да ладно. Я события не очень хорошо понимаю, привык в WF привязываться к кнопкам а суть еще предстоит постичь. Еще раз благодарю за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 17:20 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp Я события не очень хорошо понимаю ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 17:33 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Shocker.Pro, Понял! Вот я ступил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 19:47 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
jeanssp, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
Если я вызываю метод OnInitializedAsync() кнопкой Код: html 1.
- все работает. А из сеттера пишет ошибку 'An attempt was made to use the context while it is being configured. A DbContext instance cannot be used inside OnConfiguring since it is still being configured at this point. This can happen if a second operation is started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.' Метод GetGoods в сервисе - обычный Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
и ошибка происходит как раз в нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 20:58 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
jeanssp, так просто не работает. ни чего не происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 21:12 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
так, естественно, ничего не будет работать. Тебе нужно получше изучить тему асинхронности в C#/.NET Смысл в том, что ты не ожидаешь, когда у тебя завершится задача обращения к БД, а сразу пытаешься обновить компонент, естественно, ничего не происходит. Тут сразу много косяков в этом коде, ща попробую расписать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 22:51 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
Во-первых - не надо вызывать служебную функцию OnInitializedAsync из разметки. Я ведь специально выше написал, чтобы ты вынес инициализацию в отдельную функцию, чтобы ее можно было вызывать отдельно (честно говоря, я до этого отвечал, рассчитывая на определенную квалификацию, придется сделать скидку) Во-вторых - в 2020-м году не надо делать синхронные методы репозитория, а потом заворачивать их в таски. EF поддерживает асинхронные методы, их и надо использовать, таким образом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
(кстати, тут не помешает вспомнить про сортировку....) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 22:58 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
3) Соответственно, вызов репозитория у тебя превращается в Код: c# 1. 2. 3. 4. 5.
то есть обновлять внешний вид компонента нужно ПОСЛЕ того, как репозиторий вернет тебе список товаров, а не ДО ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:01 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
4) Параметр соответственно, должен вызывать функцию инициализации (хотя я бы её переименовал в RefreshListAsync - по её сути) без ожидания результата, чтобы не влиять на рендеринг вышестоящего компонента Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:04 |
|
передача параметров в метод сервиса blazor и вызов компонентов
|
|||
---|---|---|---|
#18+
5) Что касается инициализации компонента - а вот тут я как раз не стал бы ожидать ответа от БД - это операция длительная. Пусть сначала будет выведено "Loading...", а когда список товаров подгрузится, то компонент обновиться и выведет список товаров. Так что можно вызвать без ожидания Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:09 |
|
|
Start [/forum/topic.php?fid=18&msg=39961454&tid=1354442]: |
0ms |
get settings: |
16ms |
get forum list: |
16ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
73ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
471ms |
get tp. blocked users: |
0ms |
others: | 312ms |
total: | 899ms |
0 / 0 |