asp.net core 프로젝트를 처음 해보고 있습니다.
몇년전에 asp.net 을 하긴 했는데... 게다가 처음 blazor 나왔을때 샘플정도는 했었는데...
막상 core를 하려니...쉽지 않네요 ㅠㅠ
질문... .razor 콤포넌트에서 @xxxxonclick=( (e)=> eventMethod( pram1, pram2 )) ... 로 이벤트 구현하는 방법은 알고 있습니다.
현재 디자인을 제가 하다보니.. 화면에 별거 없는데 쪼개고 넣기가 그래서... cshtml에서 inject 로 구현된 서비스 정의하고
@using Microsoft.AspNetCore.Components.Web
@using ....Models
@using ....Services
@inject SQLWorkService WorkService
<button @xxxxonclick=( e => WorkService .OnOff( key, onoffValue )) >OnOff</button>
@code
{
}
<script src="_framework/blazor.server.js"></script>
Startup.cls
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddTransient<MySQLWorkDataService>();
}
....
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapBlazorHub();
});
이런 형태로 넣으려니 @xxxxonclick <-- xxxxonclick이 없다합니다.
방법이 있을까요?
콤포넌트를 정의할수 밖에 없는걸까요?
좋은 하루 보내세요.
댓글
댓글 리스트-
작성자퇴근5분전 작성자 본인 여부 작성자 작성시간 23.11.23 이건... .razor 콤포넌트에서 처리했네요.
cshtml 에서는 안되는것 같고...
다른 문제( 좀비쿠키등장... )가...... ㅠㅠ; -
작성자퇴근5분전 작성자 본인 여부 작성자 작성시간 23.11.24 대략 여기저기 검색해보니...
blazor는 내부에서 SignalR로 서버간 통신을 별도하는 듯 하네요. 전에 postback처럼?
쿠키가 만료되고 커넥트가 바로 소실되지 않아서 User.Identity 정보가 그대로 유지되는 듯 하네요.
이것이 갱신되려면 화면이 전체적으로 새로고침 되면서 프로세스를 타면 끊기는 듯 한데...
.NET5.0 ( Vs 2019 ) 버젼에서는 Hub를 재정의해서 하는 방법들이 나오긴 한데...event재정의하는 것도 안먹히는 마당에... 굳이...
그래서 해결방법은 .NET 6.0 ( Vs 2022) 으로 올린 후
endpoint.MapBlazorHub( option => {
option.CloseOnAuthenticationExpiration = true;
});
값을 주면... 쿠키만료시간이 되면 화면이 뭔가 읽는듯이 대기타고... 끊김...
이때 화면에 인증처리된 내용들까지 안바뀌고... 그냥 내부적으로 쿠키만료되면서 권한만 날아가므로...
추가작업이 필요합니다.
--- 다음. -
작성자퇴근5분전 작성자 본인 여부 작성자 작성시간 23.11.24
<script src="_framework/blazor.server.js" autostart="false"></script>
<script>
Blazor.start().then(() => {
Blazor.defaultReconnectionHandler._reconnectCallback = function (d) {
document.location.reload();
}
});
</script>
* autostart="false" 설정하고 스크립트를 추가해주면...
커넥션 끝날때 화면이 전체적으로 새로고침이 일어나면서 권한별로 보이게 했던 영역들도 초기화가 됩니다.
3일정도를 이거에 매달려서 ㅠㅠ... 어렵네요...
웹하다 윈폼하다... 왔다 갔다.. 해버렸더니... 남은게 없네요...
-
작성자재우니 작성시간 23.11.27 그렇네요. @onclick은 Blazor에서 사용하는 방식으로, 이를 Razor 페이지(.cshtml)에서 직접 사용하려고 하면 작동하지 않습니다. Razor 페이지에서 JavaScript의 onclick 이벤트를 사용해야 하더군요. 저도 잘 배우고 갑니다.
-
작성자카키104 작성시간 23.12.18 와~ 멋있어요~