C# Ajax';s窗体以创建新用户

C# Ajax';s窗体以创建新用户,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我的JS片段SucceedCreatedNewAcc [HttpPost] [Authorize] [ValidateAntiForgeryToken] public ActionResult Register(RegisterModel model) { if (ModelState.IsValid) { // Attempt to register the user try

我的JS片段
SucceedCreatedNewAcc

    [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();
    }
我有两个小问题

  • 我不知道我在
    SucceedCreatedNewAcc
    中插入了什么来重置我在上面填写的所有表单字段。我想把它们全部清空

  • 如何检索成功创建的帐户的用户名,以便将其插入
    SucceedCreatedNewAcc
    以使我的
    html
    文本更有意义,即
    $(“#完成”).html(“已创建新帐户@username”)

  • 使用类似于
    document.getElementById('registerForm').reset()
    $('#registerForm')[0].reset()
    $(':input','#registerForm')。不(':button,:submit,:reset,:hidden'))
    .val(“”).removeAttr('checked').removeAttr('selected')

  • AjaxOptions
    UpdateTargetId=“Done”
    InsertionMode=InsertionMode.Replace一起使用。这意味着id为
    Done
    的元素的html将替换为返回
    Register
    action of
    Account
    controller的html。 因此,您只需从控制器操作中返回字符串,如“已创建新帐户@username”,并删除
    $(“#完成”).html(“已创建新帐户”)来自
    SucceedCreatedNewAcc
    函数


  • 改用P-R-G模式。这是一种更干净、更好的做法。谢谢,但为什么会这样?如果用户刷新,可以防止可怕的双重发布。如果您返回视图并将其插入id为
    Done
    的div中。我想这不是你想要的。@Nick谢谢你,我现在怎么能修好它?我将视图更改为如上所述的PartialView。
        [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();
        }
    
    function SucceedCreatedNewAcc()
    {
        $( "#Done" ).html( "A new account has been created" );
    }