내가

2012-08-03 2 views
0

내가 난에서 TempData [ "메시지"] 처리 사업부를 내보기에 JQuery와내가

public ActionResult Delete(int Id){ 
    Schedule schedule = context.Schedules.FirstOrDefault(s => s.Id == Id); 
    try{ 
     context.Schedules.Remove(schedule); 
     context.SaveChanges(); 
     TempData["Message"] = "Succesfully removed schedule."; 
     return Content(Boolean.TrueString); 
    }catch(Exception ex){ 
     TempData["Message"] = "Something went wrong"; 
     return Content(Boolean.FalseString); 
    } 

} 

를 사용하여이 작업을 부르는 JQuery와 통화에서 작업 돌아 오면 표시하는 tempdata을 강제로 어떻게 마스터

<div id="messages"> 
<% if(ViewContext.TempData["Message"] != null { %> 
    <div class="alert"> 
     <%: ViewContext.TempData["Message"] %> 
    </div> 
    <% } %> 
</div> 

이것은 내 jquery의 모습과 정확히 같습니다. Boolean.TrueString/FalseString 리턴을 사용하여. jquery를 사용하여 작업을 배우기 시작 했으므로 이것이 올바른지 확실하지 않습니다.

http://ricardocovo.com/2010/09/02/asp-mvc-delete-confirmation-with-ajax-jquery-ui-dialog/

은 기본적으로 내 목표는 모든 오류를 표시하거나 잘못 아무것도 또는 단계를 완료하기 위해 수행해야 할 모든 명령의 사용자에게 통지 할 수있다. 어쩌면 JSON을 반환 유형으로 사용하려고 생각했을까요? 나는 그것을 어떻게 다루는 지 잘 모르겠습니다.

모든 권장 사항에 매우 만족합니다.

답변

0

ajax 호출을 사용하고 있습니다. 뷰가 완전히 렌더링되지 않습니다. 예를 들어 json으로 반환하고 jquery 콜백에서 처리해야하는 메시지를 표시 할 수 있습니다.

+0

그렇게하려고 메신저 행을 삭제하고, 예제에서와 같이 div를 자동으로 숨기고 싶습니다. 삭제 후 json return을 어떻게 처리합니까? – gdubs

+1

JSon을 반환 할 수 있으려면 Delete 메서드의 반환 형식을 JsonResult로 변경해야합니다. 다음과 같이 할 수 있습니다. "return Json (new {success = true, message ="all well "}))". 또한 서버 측에서 적절하게 리턴 한 것을 처리하기 위해 클라이언트 측에서 콜백을 조정해야합니다. – Tom

+0

끝내, 나는이 일을 할 수 있었다. 내가 코드를 업데이트하기 위해 당신의 코멘트를 편집 할 수 있는지 궁금합니다. 메신저 대답으로 선택 .. – gdubs

0

이 시나리오에서는 TempData 대신 ViewData를 사용해야합니다. TempData는 요청간에 임시 저장하는 데 사용됩니다. 그리고 장면 뒤에서 Session 객체를 사용합니다. Post-> Redirect-> Get과 비슷합니다.

같은 경우 데이터를 사용합니다. 따라서 TempData는 필요하지 않습니다.

+0

그것이 사라지는 tempdatabetter 사촌 아닌가요? – gdubs

0

이 함수를 jQuery와 함께 호출하면 비동기라고 부릅니다. 이것은 AJAX에 의해 수행과는 JSON에 메시지를 반환하는 것이 훨씬 쉽게됩니다 : jQuery를에

Response.Write('{"message":"foo"}'); 

을 아약스 요청이 완료되면 방금 대화 상자를 호출 할 필요가 :

$.ajax({ 
    url: "test.aspx" 
}).done(function(data) { 
    $(".alert").text(data.message); 
    $("#messages").dialog(); 
}); 
+0

그래서 목록의 행을 삭제하려고합니다. 만약 행이 succesffully 삭제되었는지 확인하고 내가 이미 div를 숨길 수 있습니까? – gdubs

+0

또한 "message : foo"부분을 가져 오는 "data.message"입니까? 이 리턴 Json (new {message = success})과 같은 것을 반환하려고 계획하는 메신저로 묻기 만하면됩니다. – gdubs