programing

ASP.NET MVC: 서버측 처리 후 성공 확인 메시지를 표시하는 방법

minimums 2023. 3. 19. 18:01
반응형

ASP.NET MVC: 서버측 처리 후 성공 확인 메시지를 표시하는 방법

ASP에서 데이터베이스 갱신이 성공했음을 확인하는 메시지를 표시해야 합니다.NET MVC 어플리케이션현재 응용 프로그램은 오류 발생 시 (Validation Summary 도우미를 사용하여) 메시지만 표시합니다.작업이 성공하면 응용 프로그램은 현재 탐색의 적절한 지점으로 리디렉션됩니다.

목표는 다음과 같습니다.

  • 확인 메시지를 적절한 방법으로 표시합니다.
  • 메시지를 읽은 후 계속 진행하기 위해 필요한 사용자 작업 최소화
  • 메시지를 표시하기 위해 추가 투고/왕복 회피
  • 애플리케이션의 여러 지점에 메시지를 삽입할 위험을 최소화하고 개발 작업을 최소화합니다.

송신 버튼 근처에 툴팁 타입의 메시지를 표시하고, 그 후 메시지를 삭제하고, 성공 후에 기존의 리다이렉트를 진행하기 위한 메커니즘이 있으면 좋겠습니다.

이는 폼을 전송하기 위한 기존 HTTP POST가 아닌 Ajax 콜을 제안하는 것으로 보입니다.어떻게 하면 좋을까요?

사용하고 싶다TempData["key"]

이건 마치ViewData["key"]단, 데이터는 다음 HttpRequest에서 유지되며 이 후 asp.net에 의해 자동으로 폐기됩니다.

그러니까 넌 할 수 있어.

컨트롤러 액션

[HttpPost]
public ActionResult SomePostAction(SomeViewModel vm)
{
   if(ModelState.IsValid) // Is User Input Valid?
   {
       try
       {
           CommitData();
           TempData["UserMessage"] = new MessageVM() { CssClassName = "alert-sucess", Title = "Success!", Message = "Operation Done." };
           return RedirectToAction("Success");
       }
       catch(Exception e)
       {
           TempData["UserMessage"] =  new MessageVM() { CssClassName = "alert-error", Title = "Error!", Message = "Operation Failed." };
           return RedirectToAction("Error");
       }

   }

   return View(vm); // Return View Model with model state errors
}

_Layout.cshtml

<!DOCTYPE html>
   <html>
     <head>

     </head>
     <body>
      @if(TempData["UserMessage"] != null)
      { 
          var message = (MessageVM)TempData["UserMessage"];
          <div class="alert @message.CssClassName">
               <strong>@message.Title</strong> 
               @message.Message
          </div>
      }
          @RenderBody()
     </body>
</html>

상세정보 : http://www.devcurry.com/2012/05/what-is-aspnet-mvc-tempdata.html

작업이 성공하면 성공 메시지에 대한 설명을 다음과 같이 ViewBag에 저장합니다.

ViewBag.successMessage="Success" 

뷰에서 ViewBag 값이 null인지 여부를 확인합니다.javascript를 통해 null이 아닌 경우 메시지를 Div로 표시합니다.

if('@ViewBag.successMessage'!="")
{
   $('#divSuccessMessage').show();
} 
else
{
  $('#divSuccessMessage').hide();
}

페이지 로드의 기본값 div 숨기기

다음 링크가 도움이 될 수 있습니다(더 자세한 설명이 필요하므로 링크를 참조해 주세요).

http://msdn.microsoft.com/en-us/magazine/ff797575.aspx

http://ofps.oreilly.com/titles/9781449320317/ch_AJAX.html

다른 사용자가 언급했듯이, 는 가장 사용하기 쉬운 옵션 중 하나입니다.일반 ASP의 주요 단점입니다.내 생각에 NET은 콘텐츠를 저장하기 위해 세션 스토리지를 사용하는 것 같습니다.즉, 웹 팜에서 작동하려면 추가 작업이 필요하거나 처음부터 세션을 켜야 합니다.

TempData는 문자열 기반의 딕셔너리입니다.호출하기 으로 하다RedirectToAction()메시지를 설정하고 다음 요청 시 메시지를 확인하고 표시합니다.메시지를 가져오면 요청 끝에 자동으로 삭제됩니다.

또는 쿠키를 사용하여 두 요청 간에 메시지를 전송할 수 있습니다.기본적으로는, 독자적인 솔루션을 도입하거나, 커스텀을 실장해 컨텐츠를 전송할 수 있습니다.TempData 영향은 최소한입니다메시지가 짧기 때문에 퍼포먼스에 미치는 영향은 최소한입니다.쿠키를 적절하게 보호해야 합니다.

저는 당신과 같은 문제에 직면해 Flash Message라는 솔루션을 개발했습니다.NuGet에서 이용할 수 있습니다.사용법은 간단합니다.전화를 걸기 전에 메시지를 큐잉하기만 하면 됩니다.RedirectToAction()음음음같 뭇매하다

FlashMessage.Confirmation("Your message");
return RedirectToAction("AdminUsers", "Admin");

뷰에 다음 문을 포함하여 이전에 대기 중인 메시지를 렌더링할 수 있습니다.

@Html.RenderFlashMessages()

언급URL : https://stackoverflow.com/questions/13541225/asp-net-mvc-how-to-display-success-confirmation-message-after-server-side-proce

반응형