C# Ajax';s窗体以创建新用户
我的JS片段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
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 ofAccount
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" );
}