@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" );
}
我有两个小问题
我不知道我在SucceedCreatedNewAcc
中插入了什么来重置我曾填写过的所有表单字段。我想清空所有这些。
如何检索已成功创建的帐户的用户名,以便我可以将其插入SucceedCreatedNewAcc
以使我的html
文字更有意义,即$( "#Done" ).html( "A new account @username has been created" );
答案 0 :(得分:0)
使用document.getElementById('registerForm').reset()
或$(’#registerForm’)[0].reset();
或类似内容
$(':input',’#registerForm’).not(':button,:submit,:reset,:hidden')
.val('').removeAttr('checked').removeAttr('selected')
您将AjaxOptions
与UpdateTargetId="Done"
和InsertionMode=InsertionMode.Replace
一起使用。这意味着标识为Done
的元素的html将替换为返回Register
控制器的Account
操作的html。
所以你需要的是从控制器操作中返回“已创建新帐户@username”的字符串,并从$( "#Done" ).html( "A new account has been created" );
函数中删除SucceedCreatedNewAcc
。