2011-03-02 3 views
2

사용자가 양식의 제출 단추를 클릭하면 사용자에게 성공/실패 메시지를 반환하고 사용자에게 메시지를 보내는 가장 좋은 방법은 무엇인지 궁금합니다.확인 또는 오류 메시지를 다시보기로 전달하는 좋은 방법은 무엇입니까?

예를 들어 로그인 양식에서 사용자가 잘못된 비밀번호를 입력하면보기에 로그인 실패를 알리는 메시지가 다시 표시되기를 원합니다. 또는 업데이트 폼에서 원래보기에 업데이트가 성공했다는 메시지가 표시됩니다.

제 아이디어는 "ErrorMessage"또는 "SuccessMessage"와 같은 ViewBag 속성을 찾고 이러한 속성에 값이있을 때 조건부로 표시하는 부분보기 또는 HTML 도우미를 만드는 것입니다. 이러한 구성 요소는 _Layout에 추가하거나 필요한 각 양식에 수동으로 추가 할 수 있습니다.

편집

의 ValidationSummary 방법은 당신이 로그인/등록이 실패했을 때 표시하는 데 사용할 수 있습니다 의미 속성 오류를 제외할지 여부의 매개 변수를 사용하는 것을 발견 이후이 있습니다. 그러나 오류가없는 경우에도 유효성 검사 요약이 여전히 생성되는 버그가있는 것으로 보입니다.

답변

7

이것은 내가했습니다 좋은 질문 하나입니다 최근에 새로운 MVC 응용 프로그램에서 해결하려고했습니다. 나에게 ModelState.AddModelError는 오류는 있지만 성공 또는 경고 메시지 같은 것을 전달할 때는 작동하지 않는다.

다음은 내가 최근에하기로 결정 접근 방식이고 나는 그것에 어떤 의견을 환영합니다 :

  1. 내가 알림라는 클래스를 생성하고 열거는 NotificationType했다. 성공, 오류, 경고, & 정보 : NotificationType 4 개 값이 있습니다. 알림의 속성은 '메시지'및 '유형'입니다.

  2. 나는 사용자의 Session 객체를 사용하여 HttpRequest의 수명 동안 Notification 객체의 인스턴스를 보유하는 NotificationManager이라는 정적 클래스를 가지고 있습니다. 사용자가 "알리는"것에 따라 어떤 컨트롤러가 어떤 수의 알림 개체를 추가 할 수 있다는 점입니다.

  3. IEnumerable Notification (즉, NotificationManager.Notifications)을 사용하고 모든 Notification에 대해 하위 LI가있는 UL을 렌더링하는 마스터 페이지 (예 : Html.NotificationSummaryFor())에서 한 번 호출하는 맞춤 HtmlHelper가 있습니다. 그런 다음 CSS 클래스를 사용하여 'NotificationType'(오류는 빨간색, 경고는 노란색, 성공은 녹색 등)에 따라 해당 알림 LI의 스타일을 지정합니다. HtmlHelper는 관리자에게보기를 렌더링 한 후에 관리자에게 알림을 지우는 기능을 담당합니다.

이 구현은 매우 간단하고 한계를 가지고 있지만, 일반적으로,이 같은 프레임 워크를 갖는 동일한 응용 프로그램 작업을 개발자의 한 팀이 중요하다 일관된 방식으로 알림을 제공 할 수있는 보장 것을 발견 유용성과 유지 보수성에 이르기까지.

+0

나는이 Rob을 정말 좋아합니다. 이것은 나가 나가는 것을 시도하고 있던 종류의 것이고 당신은 그것을 진짜로, 감사 고 기술했다. 나는 * 어떤 페이지라도 알림/에러 등을 추가 할 수 있다는 생각을 좋아한다. 비동기 이벤트까지도 확장 할 수 있는지 알고 싶다. –

+0

다시 한번 감사드립니다. 방금 구현 한이 문제는 매우 깨끗한 솔루션입니다. 내가 당신과 약간 다르게 한 가지는 HttpContent.Current.Items 컬렉션에있는 알림 목록을 가졌기 때문에 요청이 끝나면 자동으로 제거됩니다. html 확장자를 지우지 않기를 원했기 때문에 이것은 잘 작동했습니다. 그러나 다시 당신의 방법은 렌더링을 연기 할 수 있습니다. 어쨌든이 덕분에 정말 고마워. 고마워. –

+0

춥고 기쁜 일도 잘 해냈습니다. 도와 줄 수있어서 기뻐! –

1

asp-net-mvc-2-model-validation 이것은 유효성 검사를 설정하는 정말 쉬운 방법입니다. 또한 당신은 당신의 코드에서 그의 모델 상태로 modelError을 추가 한 다음 확인 같은 것을 할 수 있습니다 로그인을 같은 일을하는 경우는

if (ModelState.IsValid) { 
      if (!FormsAuthentication.Authenticate(userName , password)) 
       ModelState.AddModelError("" , "Incorrect username or password"); 
     } 

     if (ModelState.IsValid) { 
      FormsAuthentication.SetAuthCookie(userName , false); 
      return Redirect(url ?? Url.Action("Index" , "Admin")); 
     } else 
      return View(); //goes right back to the log on screen 
+0

콜린에게 감사 드린다. 나는 이것이 현재 내가하고있는 방식이라고 언급하는 것을 잊었다. 내가 이것을 좋아하지 않는 이유는 오류를 표시하기 위해 양식의 맨 위에 @ Html.ValidationSummary()를 넣어야하기 때문입니다. 이것만으로도 문제가 없지만 요소 옆에 각 요소에 대한 클라이언트 측 유효성 검사가 있습니다. 즉, 유효성 검사 요약에 입력 요소 옆에 유효성 검사 오류가 표시되는 것을 의미합니다. –

+0

오. 아마도 유효성 검사가 성공 또는 실패라고 표시하는 플래그가 포함 된 사용자 정의보기 모델을 만든 다음 html 도우미를 사용하여 일부 출력을 생성 할 수 있습니다. –

관련 문제