2014-09-23 103 views
6

我想在ajax调用后加载视图。在ajax调用之后,我的操作方法将返回一个view,该函数将在调用成功后加载。在asp.net MVC中的AJAX调用后渲染视图

AJAX我用

功能PostMethods(URL,FNAME,LNAME,电子邮件){

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

AJAX调用留在同一页上如此'RedirectToAction'不起作用。你想在同一页面上呈现视图,还是想在没有错误的情况下重定向到另一个页面? – 2014-09-23 12:20:50

+0

@StephenMuecke我想重定向到另一个页面。但是当且仅当数据保存成功。 – Riki 2014-09-23 12:23:41

+0

那么为什么不使用提交的标准形式,它允许你做一个重定向?如果数据没有正确保存,那么只需返回视图并显示任何验证错误。 – 2014-09-23 12:27:15

回答

8

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