我有一个注册表,成功注册后,它会重定向到另一个视图。
我使用提交按钮将数据插入数据库,我想清除当前视图中的值,并将用户重定向到同一控制器下另一个视图中的logon page
。
提交类型没有执行jquery中提到的操作。请帮助我
这是我的代码预览
Account/register
Account/logon
Accountcontroller.cs
[HttpPost]
public ActionResult Register(RegisterModel model, FormCollection form)
{
try {
---code
}
catch {
}
}
register.cshtml
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { id = "accForm" }))
{
@html.textboxfor(.....)
@html.textboxfor(.....)
@html.textboxfor(.....)
@html.textboxfor(.....)
....
<input type="submit" value="CreateAccount" class="buttonclass" title="CreateAccount" ; onclick="SaveUser(this);"
}
function SaveUser(btnClicked) {
alert("clear");
document.getElementById("regname").value = '';
document.getElementById("regusername").value = '';
document.getElementById("regemail").value = '';
document.getElementById("regpassword").value = '';
document.getElementById("regpassword2").value = '';
$.ajax({
url: window.location.pathname + '/Account/Logon',
type: 'GET',
})
.success(function (result) {
alert("user saved successfully");
});
更新:
function SaveUser(btnClicked) {
document.getElementById("regname").value = '';
document.getElementById("regusername").value = '';
document.getElementById("regemail").value = '';
document.getElementById("regpassword").value = '';
document.getElementById("regpassword2").value = '';
alert('clear');
$.ajax({
type: "POST",
url: window.location.pathname + "Account/Register",
success: function (response) {
$.ajax({
url: window.location.pathname + '/Account/Logon',
type: 'GET',
})
.success(function (result) {
alert("user saved successfully");
// window.location ="";
});
},
error: function (xhr, status, error) {
alert("Failed");
}
});
}
我收到了失败警报。 请帮忙
答案 0 :(得分:1)
如果要在SuccessFul登录时重定向页面,请在成功(ajax成功)上写入重定向代码。 Exp:
$.ajax({
url: window.location.pathname + '/Account/Logon',
type: 'GET',
})
.success(function (result) {
alert("user saved successfully");
// window.location ="";
});
答案 1 :(得分:0)
Arun发布的内容完全奏效。但您还必须在客户端站点代码中维护URL。
另一种方法是在控制器中查找发布的请求是否为AjaxRequest。 如果是这样,并且某些条件适用,您可以重定向甚至将部分内容发送回客户端。
查明请求是否是带MVC 4的AjaxRequest的一种方法是
new HttpRequestWrapper(System.Web.HttpContext.Current.Request).IsAjaxRequest()
或解析ajax属性的请求标头。
这也是关于检测Ajax请求的SO问题 Detecting IsAjaxRequest() with ASP.NET MVC and JQuery Form Plugin / File Upload
好的,如果你考虑使用编译路由在ASP.NET MVC中发布ajaxy东西......
$.ajax({
url: '@Url.Action( "Register", "Account")',
data: {model:JSON.stringify(inputs)},
type: 'POST',
或表单集
$.ajax({
url: '@Url.Action( "Register", "Account")',
data: {col :$("form_id").serialize()},
type: 'POST',
...
在视图中使用@ URL.Action帮助器。 现在,当Register收到ajax请求时,处理服务器上的重定向逻辑......