我正在尝试在ajax调用后加载视图。在ajax调用之后,我的action方法将返回一个view
,它将在调用成功后加载。
AJAX我正在使用
函数PostMethods(url,fname,lname,email){
var userRegisterViewModel = { FirstName: fname, LastName: lname, Email: email }; $.ajax({ type: 'Post', dataType: "json", url: url, contentType: 'application/json', data: JSON.stringify(userRegisterViewModel),
//成功与错误代码
});}
我的ajax调用api方法,我正在传递fname
,lname
和email
。现在我的api方法成功地将这些数据存储到数据库中,如果无法存储数据,它将返回View
,它将返回一条错误消息,我可以在当前视图中向用户显示该消息。在当前视图的HTML中有一个空<spam>
来显示错误消息。
我的行动方法是:
public ActionResult RegisterAndLogin(UserRegisterViewModel model)
{
ActionResult returnNextPage = null;
bool successToStoreData = SomeMethod(model);
if (successToStoreData)
{
returnNextPage = RedirectToAction(string.Empty, "Home");
}
else
{
//Text message to show to the user
}
return returnNextPage;
}
我应该在AXAJ和操作方法
中编写什么代码来执行此操作答案 0 :(得分:13)
AJAX调用保持在同一页面上,因此RedirectToAction不起作用。您需要修改控制器以返回JSON,例如
[HttpPost]
public JsonResult RegisterAndLogin(UserRegisterViewModel model)
{
bool successToStoreData = SomeMethod(model);
if (successToStoreData)
{
return null; // indicates success
}
else
{
return Json("Your error message");
}
}
并修改AJAX函数
$.ajax({
type: 'Post',
dataType: "json",
url: url,
contentType: 'application/json',
data: JSON.stringify(userRegisterViewModel),
success: function(message) {
if (message) {
$('yourSpanSelector').text(message); // display the error message in the span tag
} else {
window.location.href='/YourController/YourAction' // redirect to another page
}
}
})