2013-01-01 10 views
0

과 ActionResult로 다시보기 대신 메시지를 보낼 수 I이 ASP.NET MVC4에서 다음 작업을나는 ASP.NET MVC4

public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      try 
      { 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
       WebSecurity.Login(model.UserName, model.Password); 
       // ?? Need some code here 
      } 
      catch (MembershipCreateUserException e) 
      { 
       ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

I가이 호출하는 다음 코드를

$('#article').on('submit', '#loginForm, #registerForm', function (e) { 
    e.preventDefault(); 
    var $form = $(this); 
    var href= $form.attr('data-href'); 
    $form.validate(); 
    if (!$form.valid()) { 
     return false; 
    } 
    var data = $form.serializeArray(); 
    $.ajax(
    { 
     data: data, 
     type: 'POST', 
     url: href 
    }) 
     .done(submitDone) 
     .fail(submitFail); 
    function submitDone(content) { 
     $('#article').html(content) 
    } 
    function submitFail() { 
     alert("Failed"); 
    } 
    return false; 
}); 

등록이 작동하면 전체 웹 페이지를 강제로 새로 고침하고 싶습니다. 할 수있는 방법이 있습니까 actionmethod에서 javacript에 ~ 으로 메시지를 다시 보내면 등록이 작동하고 자바 스크립트가 전체 웹 페이지를 새로 고쳐야한다고 말합니까?

나는 RedirectToLocal ("/"); 그러나 이것은 확실히 작동하지 않습니다. 이게 무엇입니까 새로운 페이지를 반환 한 다음 #article DIV에 채워 넣는 것입니다.

답변

0

서버에서 자동으로 브라우저를 새로 고치는 것은 없습니다.

서버에서 브라우저를 새로 고치려면 서버에서 클라이언트로 페이지를 새로 고칠 필요가 있음을 나타내는 내용을 보내야합니다. 브라우저를 새로 고치려면 표시를 찾으려면 자바 스크립트를 작성해야합니다.

클라이언트 코드

public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      try 
      { 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
       WebSecurity.Login(model.UserName, model.Password); 
       // ?? Need some code here 
      } 
      catch (MembershipCreateUserException e) 
      { 
       ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
      } 
     } 

    // If we got this far, something failed, redisplay form 
    return Json(new {isSuccess = true, content = model}); 
} 

나는 당신이 양식 필드를 취소의 경우, 페이지를 새로 고쳐 달성하려고하는지 모르는 오전

function submitDone(content) { 

var json = $.parseJson(content); 

    if(json.isSuccess) { 

    //Do something here 

    } 

    $('#article').html(json.content) 

} 

서버 코드입니다. JavaScript를 사용하여 동일한 결과를 얻을 수 있습니다. 페이지 새로 고침 대신 자바 스크립트를 사용하면 오류 메시지와 같은 페이지 상태를 잃지 않습니다.

+0

감사합니다. 네, 당신이 말하는 것을 깨닫고 이미 동의합니다. 내 질문은 성공을 말하기 위해 자바 스크립트로 메시지를 보낼 수있는 방법이 있었기 때문에 js가 페이지를 완전히 새로 고칠 수있게 만들었습니까? –

+0

물론 JSON으로 콘텐츠를 포장하십시오. 클라이언트 측에서는 단순히 JSON을 구문 분석합니다. –

0

아니라 내가 성공 페이지에 다시 탄약을 잴 것이다이

function submitDone(content) { 
    window.location.reload(); 
} 

이 같은 성공에 페이지를 새로 빠른 자바 스크립트 트릭을 생각할 수 있습니다.