2
@using (Ajax.BeginForm("Register","Account",
new AjaxOptions
{
    HttpMethod="POST",
    UpdateTargetId="Done",
    InsertionMode=InsertionMode.Replace,
    OnSuccess="SucceedCreatedNewAcc"
}
)) 
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
//Fill in the form
 <div id="Done"></div>
}

私のregister方法

    [HttpPost]
    [Authorize]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);

                return PartialView(model);
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }            
        return PartialView();
    }

私のJS作品SucceedCreatedNewAcc

function SucceedCreatedNewAcc()
{
    $( "#Done" ).html( "A new account has been created" );
}

2つの小さな問題があります

  1. SucceedCreatedNewAcc上記で入力したすべてのフォーム フィールドをリセットするために、何を挿入したのかわかりません。それらをすべて空にしたいと思います。

  2. SucceedCreatedNewAcc正常に作成されたアカウントのユーザー名を取得して、htmlテキストをより意味のあるもの にするために挿入できるようにするにはどうすればよいですか$( "#Done" ).html( "A new account @username has been created" );

4

1 に答える 1

0
  1. document.getElementById('registerForm').reset()または$(’#registerForm’)[0].reset();または のようなものを使用します$(':input',’#registerForm’).not(':button,:submit,:reset,:hidden') .val('').removeAttr('checked').removeAttr('selected')

  2. とを使用AjaxOptionsします。つまり、id を持つ要素の html は、コントローラーのアクションを返す html に置き換えられます。したがって、必要なのは、コントローラー アクションから"A new account @username has been created" のような文字列を返し、関数から削除するだけです。UpdateTargetId="Done"InsertionMode=InsertionMode.ReplaceDoneRegisterAccount$( "#Done" ).html( "A new account has been created" );SucceedCreatedNewAcc

于 2013-04-07T21:13:02.057 に答える