• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    해결됨

변수 상태유지

22.10.05 15:54 작성 조회수 125

1

안녕하세요 오랜만에 학습하다 궁금한점이 있어 문의 남깁니다.

 

  1. razor 페이지에 변수를 선언해 해당 값을 화면에 보여주는 작업을 할 시 사이드바를 통해 다른페이지로 이동했다 돌아오면 변수가 없어지게 됩니다. 이를 해결하기 위해 클래스를 선언 후 해당 클래스를 종속성 주입을 통해 해당 클래스 내부의 변수를 사용하는 식으로 해결했는데 이 방법이 정석적인 방법인지 궁금합니다.

 

  1. cs파일의 클래스를 통해 함수를 구현하는데 해당 함수에서 다른 razor페이지에 직접 접근해 데이터를 화면에 뿌리는 방법이 있는지 궁금합니다. 현재는 방법을 찾지 못해 cs파일을 사용하지 않고 해당 함수 내용을 razor 파일의 code 부분에 해당 함수 내용을 구현해 사용하고 있습니다.

     

  2. 배열에 값을 입력하고 입력되는 값들을 화면에 보여주기 위해 StateHasChanged() 를 사용해 보여주었는데 해당 페이지에서는 잘 동작을 하는데 다른 페이지로 이동 후 다시돌아오면 StateHasChanged()가 작동하지 않습니다. 디버그 확인해보니 페이지를 이동했다 와도 배열에 값을 정상적으로 삽입이 됩니다. 다른 이벤트(버튼 클릭) 등이 발생하면 화면에 보여주는 작업이 동작하는데 StateHasChanged()로는 동작 안하는게 이해가 안갑니다... 디버그 모드로 확인 시 StateHasChanged를 수행하기는 하는데 화면에는 변화가 없습니다. 이런경우가 있나요?

 

항상 감사합니다.

답변 1

답변을 작성해보세요.

0

  1. 정석적..... 이라고 확신해드리기는 어렵지만 msdocs에서 권장하는 바라 아마 제일 괜찮은 방법이지 아닐까 싶습니다.

     

  2. 장담합니다. razor 페이지를 REST API 처럼 값만을 되돌리는 방식으로 만드는 하나 빼고는 없을 것 같습니다. 만약 한 razor 페이지를 불러왔을 때 json 값만을 응답시키고 cs 파일 안에서 getfromjsonasync 로 그 json 값을 가져오는 것 빼고는 없을 것 같습니다.

  3. statehaschanged 보통 수명구성요소(Oninitialized 등등) 함수 안에서나 이와 연결된 함수에서만 작동하는 것으로 알고 있습니다. 만약 클릭시 발동하는 일반 함수 같은 경우에서는 설령 statechange를 불러 오더라도 렌더링이 다시 되지는 않을 것으로 예상됩니다. 만약 수명 구성 요소 함수 안에서 불러왔는데도 변화가 없다고 한다면 이는 페이지 라우팅과 겹쳐서 일 것으로 추정됩니다.예로 /page/1 -> /page/2 로 이동했을 때 렌더링이 꼬이는 경우가 제 홈페이지에서도 간혹 보이고는 했습니다. 그럴때는 페이지 이동을 navigationmanager를 써서 진행하였습니다. 이동시에 문제가 생긴다면 기본 지원 기능인 navigationmanager를 한번 사용해 보세요~

항상 자세하고 빠른 답변 감사합니다.

navigationmanager를 통해 전환하는 방법 한번 시도해보도록하겠습니다!