Ajax的Form用于创建新用户

时间:2013-03-11 20:34:28

标签: c# asp.net-mvc asp.net-mvc-4

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

我有两个小问题

  1. 我不知道我在SucceedCreatedNewAcc中插入了什么来重置我曾填写过的所有表单字段。我想清空所有这些。

  2. 如何检索已成功创建的帐户的用户名,以便我可以将其插入SucceedCreatedNewAcc以使我的html文字更有意义,即$( "#Done" ).html( "A new account @username has been created" );

1 个答案:

答案 0 :(得分:0)

  1. 使用document.getElementById('registerForm').reset()$(’#registerForm’)[0].reset();或类似内容 $(':input',’#registerForm’).not(':button,:submit,:reset,:hidden') .val('').removeAttr('checked').removeAttr('selected')

  2. 您将AjaxOptionsUpdateTargetId="Done"InsertionMode=InsertionMode.Replace一起使用。这意味着标识为Done的元素的html将替换为返回Register控制器的Account操作的html。 所以你需要的是从控制器操作中返回“已创建新帐户@username”的字符串,并从$( "#Done" ).html( "A new account has been created" );函数中删除SucceedCreatedNewAcc