2010-05-10 9 views
1

예상대로 작동하지 않는 다음 코드가 있습니다. 내가 컨트롤러에서 retrun을 가지고 경고 표시 컨트롤러에서 반환 된 값을 사용하고 싶습니다. 내 컨트롤러에서제출 후 메시지를 다시 반송하는 방법

$('#change').dialog({ 
      autoOpen: false, 
      width: 380, 
      buttons: { 
       "Close": function() { 
        $(this).dialog("close"); 
       }, 
       "Accept": function() { 
        var test = $("#ChangePasswordForm").submit(); 
        alert(test); 
       } 
      } 
     }); 

나는 문자열 내가 그렇게 할 수있는 방법

[AcceptVerbs(HttpVerbs.Post)] 
    public string ChangePassword(string Name) 
    { 
     var msg = "Cool!"; 
if (name != null) 


return msg; 
       } 

을 반환하려면?

답변

1

컨트롤러가 ActionResult에서 파생 된 형식을 반환해야합니다. 그것의 경우를

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ChangePassword(string name) 
    { 
     if (!string.IsNullOrEmpty(name)) 
     { 
      ViewData["msg"] = "Cool"; 
     } 
     return View(); 
    } 

그런 다음보기에서 값의 존재를 확인하고 표시 : 간단한 확인 메시지를 표시하려면

이 같은을 ViewData 가방에 추가 할 수 있습니다 이 : 모든

<% if(ViewData["msg"] != null) { %> 
    <script type="text/javascript">alert('<%= ViewData["msg"].ToString() %>')</script> 
<%} %> 
+0

그건 꽤 흥미 롭습니다. 사실, 이미 표시되어있는 팝업 메시지를 표시해야합니다. 어떻게해야합니까? – learning

+0

원본 코드 샘플에서 제출 후 발생하는 경고는 모달이며 해제 될 때까지 브라우저를 차단합니다. 경고 대화 상자가 표시되면 추가 내용을 추가 할 수 없습니다. –

+0

알림 사용하지 않음 - $ ('# elementId') 사용 .html (e.responseText); –

1
[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ChangePassword(string Name) 
    { 
     var msg = "Cool!"; 
     if (name != null) 
     {  
      return Content(msg, "text/plain"); 
     } 
     else 
     { 
      return Content("Error...", "text/plain"); 
     } 
    } 
1

첫째, 메신저이에 대한 아약스 양식을 사용하는 가정. 나는 또한 당신이 당신의 텍스트를 넣기 위해 뭔가를 가지고 있다고 가정합니다. UpdateTargetId가 텍스트로 업데이트하려는 요소의 ID를 가리 키도록 설정하면됩니다.

<%using (Ajax.Form("ChangePasswordForm", new AjaxOptions { UpdateTargetId = "result" })) %> 

.

[HttpPost] 
public ContentResult ChangePassword(string s) 
{ 
     var msg = "Cool!"; 
     if (s != null ? return Content(msg, "text/plain") : return Content("An error has occured", "text/plain")); 
} 
0

다시 게시를 수행하고 대화 상자가 제거되도록 양식을 제출하지 마십시오.

대신 Controller Action에 AJAX 게시물을 수행하고 데이터가 포함 된 JsonResult를 반환하십시오.

Ajax 요청에서 성공 콜백을 후크하고 Json 객체에서 데이터를 전달하는 alert를 호출하십시오.

제출을 클릭 한 후 로딩 마스크를 사용하지 않아도 사용자가 어떤 일이 일어나고 있는지 알 수 있습니다.

관련 문제