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
'programing' 카테고리의 다른 글
스프링 부트 보안 - java.lang.부정 인수예외: 부여된 null을 전달할 수 없습니다.권한 수집 (0) | 2023.03.19 |
---|---|
ng-click 부모부터 자녀까지 클릭 (0) | 2023.03.19 |
woocommerce에서 물품의 재고 수량을 어떻게 얻습니까? (0) | 2023.03.19 |
WP REST API가 게시 유형에서 게시물을 가져옵니다. (0) | 2023.03.19 |
Oracle 스토어드 프로시저에서 "현황"과 "현황"의 차이점은 무엇입니까? (0) | 2023.03.19 |