2010-06-29 4 views
2

내 프로젝트에 ASP.NET MVC2를 사용하고 있습니다. 작업 후에 사용자 확인 메시지를 보내려고합니다.MVC2에서 사용자에게 메시지 전달

이상적 : 쿼리 문자열과 함께 링크를 사용자가 클릭 (즉, 항목을 삭제하는 링크) 컨트롤러는, 링크의 말씀 않는 성공 메시지를 생성하고,에서 쿼리 문자열을 제거하는 RedirectToAction을 사용 을 URL. 새 작업은 성공 메시지를 표시합니다.

내가 모델 오류를 사용하여 제안했지만이 상황에서 작동하지 않을 것이라고 생각합니다.

감사합니다.

public ActionResult Index() 
{ 
    string message = TempData["message"] as string ?? string.Empty; 
    // send the message as model so that the view can print it out 
    return View("index", message); 
} 

[HttpPost] 
public ActionResult DoWork() 
{ 
    // do some work 
    TempData["message"] = "Work done!"; 
    return RedirectToAction("index"); 
} 

는 내부적으로 TempData가 정보를 유지하기 위해 세션을 사용하지만 자동으로 다음 요청 후 제거됩니다, 그래서 그것은 단지 저장 다음 다음 요청에 사용할 수 :

+1

삭제할 링크가 없습니다. 검색 엔진이 크롤링하면 어떻게 될까요? 삭제할 양식을 게시하는 버튼을 사용하십시오. – BritishDeveloper

답변

7

당신은 TempData를 사용할 수 있습니다.

2

먼저 데이터를 수정하라는 요청을 사용하지 마십시오! 귀하의 사이트를 색인 생성하고 모든 삭제 링크를 방문하는 검색 엔진을 상상해보십시오.

둘째, 대상 작업이 성공/실패 메시지를 표시하기 위해보기를 반환 할 수없는 이유는 무엇입니까?

+0

정말 그렇게 나빴습니까? 해당 지역을 방문하려면 로그인해야하며 사용자는 삭제되는 항목의 소유자 여야합니다. 나는 이것을 잠시 동안 사용했지만 문제가 없었지만 이제는 나를 놀라게 할 것입니다. 나는 아직도 배울 것이 많다. – smdrager

+0

예, 나쁘다. 심지어 파국적이다. 사람들이 브라우저에 설치하는 경향이있는 플러그인이 있습니다. 이러한 플러그인은 사용자가 탐색하는 콘텐츠의 색인을 생성하여 '서핑 경험을 개선'하는 것처럼 가장합니다. 따라서 검색 엔진이 될 필요가 없습니다. 그 사람이 알지 못해도 그 자신이 될 수 있습니다. –

+0

와우. 나는 이것을 한동안 사용 해왔다. 하하 .. ㅎ ... 아. 제출 단추 또는 링크와 <양식 액션 = "..."방법 = "POST"> <입력 유형 = "숨겨진"이름 = "아이디"/> : 그래서 대신 접수 방법은 될 것 js를 사용하여 양식을 제출 하시겠습니까? – smdrager

2

나는 내 Site.Master 파일에 메시지와 함께 TempData를 사용

<% if (TempData["Error"] != null) 
    { %> 

    <div id="errorMessage"> 
     <%= Html.Encode(TempData["Error"]) %> 
    </div> 
    <% } %> 

    <% if (TempData["Warning"] != null) 
     { %> 

    <div id="warningMessage"> 
     <%= Html.Encode(TempData["Warning"]) %> 
    </div> 
    <% } %> 

내 컨트롤러에서 나는 어느 TempData["Error"] 또는 TempData["Warning"]에 값을 할당 할 수 있습니다 그들을 스타일을 다르게했다.

관련 문제