我在ASP.NET MVC4中有以下操作
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
// ?? Need some code here
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
我有以下代码来调用它:
$('#article').on('submit', '#loginForm, #registerForm', function (e) {
e.preventDefault();
var $form = $(this);
var href= $form.attr('data-href');
$form.validate();
if (!$form.valid()) {
return false;
}
var data = $form.serializeArray();
$.ajax(
{
data: data,
type: 'POST',
url: href
})
.done(submitDone)
.fail(submitFail);
function submitDone(content) {
$('#article').html(content)
}
function submitFail() {
alert("Failed");
}
return false;
});
如果注册有效,我想强制整个网页刷新。在那儿 我可以将动作方法中的消息发送回javascript 的方式 告诉它注册工作,javascript应该刷新整体 网页?
我确实尝试过返回RedirectToLocal(“/”);但这肯定不起作用。什么 这样做是为了返回一个新页面,然后在#article DIV中填充它。
答案 0 :(得分:0)
没有任何内容会自动从服务器刷新浏览器。
要从服务器刷新浏览器,您需要从服务器向客户端发送一些内容,表明您要刷新页面。您需要编写javascript以查找刷新浏览器的指示。
客户代码
function submitDone(content) {
var json = $.parseJson(content);
if(json.isSuccess) {
//Do something here
}
$('#article').html(json.content)
}
服务器代码
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
// ?? Need some code here
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return Json(new {isSuccess = true, content = model});
}
如果要清除表单字段,我不确定您要通过刷新页面来完成什么。使用JavaScript也可以实现同样的目的。通过使用javascript代替页面刷新,您不会丢失页面状态,例如错误消息。
答案 1 :(得分:0)
好吧,我可以想到一个快速的javascript技巧来刷新像这样的成功页面
function submitDone(content) {
window.location.reload();
}
这将重新加载页面上的成功。