CAFE

ASP.NET 질문

asp.net core] cshtml에서 @onclick 사용하기?

작성자퇴근5분전|작성시간23.11.23|조회수73 목록 댓글 5

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 와~ 멋있어요~
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼