在asp.net MVC中进行AJAX调用后渲染视图

时间:2014-09-23 12:15:41

标签: c# jquery ajax asp.net-mvc-5

我正在尝试在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方法,我正在传递fnamelnameemail。现在我的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和操作方法

中编写什么代码来执行此操作

1 个答案:

答案 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
    }
  }
})