0

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);
    }

これを呼び出す次のコードがあります。

$('#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;
 });

登録が機能する場合は、Web ページ全体を強制的に更新したいと思います。actionmethod から JavaScript にメッセージを送り返して、登録が機能し、JavaScript が Web ページ全体を更新する必要があることを伝える方法はありますか?

return RedirectToLocal("/"); を試しました。しかし、これは間違いなく機能しません。これが行うことは、新しいページを返し、#article DIV に入力することです。

4

2 に答える 2

0

サーバーからブラウザを自動的に更新するものはありません。

サーバーからブラウザを更新するには、ページを更新することを示す何かをサーバーからクライアントに送信する必要があります。ブラウザを更新するための指示を探すために、JavaScriptを作成する必要があります。

クライアントコード

function submitDone(content) {

 var json = $.parseJson(content);

  if(json.isSuccess) {

   //Do something here   

  }

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

 }

サーバーコード

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});
}

フォームフィールドをクリアする場合は、ページを更新して何を達成しようとしているのかわかりません。JavaScriptを使用しても同じことが達成できます。ページの更新の代わりにjavascriptを使用することで、エラーメッセージなどのページの状態が失われることはありません。

于 2013-01-01T17:26:29.517 に答える
0

さて私はこのような成功でページを更新するための簡単なJavaScriptのトリックを考えることができます

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

これにより、成功時にページがリロードされます。

于 2013-01-02T16:30:58.117 に答える