-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
Controller에서 프로세스 처리 완료 후 alert 띄우는 방법이 있을까요?
21.05.11 10:32 작성 조회수 685
0
TempData["Message"] 나 ModelState.AddModelError(string.Empty, message); 처럼
페이지 전환 후 안내문구를 보여주지 않고,
페이지 전환 전에 alert("수정되었습니다."); 문구를 보여줄 수 있는 방법이 있을까요?
답변을 작성해보세요.
1
김정수
지식공유자2021.05.11
Hye Rim Park님, 반갑습니다.
페이지 전환 전에 alert 문구를 보여줄 방법에 대해 문의하셨네요.
아시다시피 ASP.NET Core의 기본동작이 페이지 전환 후 안내문구를 보여주도록 되어 있기에,
조금 편법을 써야합니다.
MembershipController의 UpdateInfo(UserInfo user) 액션 메서드를 예로 들면,
정보수정이 성공했을 때
return RedirectToAction("UpdateInfo", "Membership"); 이 부분을
ModelState.AddModelError("Success", "사용자 정보수정이 성공적으로 이루어졌습니다.");
return View(user); 로 변경합니다.
UpdateInfo.cshtml에서
@{
ViewData["Title"] = "멤버십 사용자 정보수정";
Layout = "~/Views/Shared/_Layout.cshtml";
string successMessage = !ViewData.ModelState.IsValid
&& ViewData.ModelState["Success"] != null
&& ViewData.ModelState["Success"].Errors.Count > 0 ?
ViewData.ModelState["Success"].Errors.First().ErrorMessage :
string.Empty;
}
@section Scripts {
<script>
let message = "@successMessage";
if (message.length > 0) {
alert(message);
location.href = "@Url.Action("UpdateInfo", "Membership")";
}
</script>
}
윗부분을 이렇게 구성합니다.
successMessage에 "Success" 이름으로 등록된 error 정보가 있을 때 UpdateInfo 액션메서드에서 받은
Success 메시지를 뷰에서 받아 사용하는 것입니다.
결국 바로 RedirectToAction으로 페이지 이동하는 대신에,
자기 페이지로 다시 돌아와서 메시지를 출력한 후에 location.href 로 이동하는 것이죠.
즐거운 하루 되세요.
답변 1