2014-09-23 20 views
6

Bir ajax çağrısından sonra bir görünüm yüklemeye çalışıyorum. Ajax çağrısından sonra, hareket yöntemim, arama başarılı olduktan sonra yüklenecek olan bir view döndürecektir. BenBir ASPAX çağrısından sonra bir görünüm oluşturma asp.net MVC

fonksiyon PostMethods kullanıyorum

AJAX (url, fname, lname, e-posta) {

var userRegisterViewModel = { 
    FirstName: fname, 
    LastName: lname, 
    Email: email 
}; 
$.ajax({ 
    type: 'Post', 
    dataType: "json", 
    url: url, 
    contentType: 'application/json', 
    data: JSON.stringify(userRegisterViewModel), 

// Başarı ve hata kodu

});} 

Ajax, fname, lname ve email adreslerini geçtiğim bir api yöntemini çağırıyor. Şimdi benim api metodu bu veriyi başarılı bir şekilde saklar ve veriyi saklayamazsa bir View döndürür. Bu, geçerli görünümde kullanıcıya gösterebileceğim bir hata mesajı verir. Geçerli görünümün HTML'sinde hata mesajını göstermek için boş bir <spam> vardır.

Benim Eylem Yöntemi geçerli: RedirectToAction çalışmıyor bu yüzden AXAJ ve eylem yönteminde bunu yazmalıyım Ne kod

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

+1

AJAX çağrıları aynı sayfada kalmak AJAX işlevini değiştirin. Görünümü aynı sayfada oluşturmak mı yoksa hata yoksa başka bir sayfaya yönlendirmek mi istiyorsunuz? –

+0

@StephenMuecke Başka bir sayfaya yönlendirmek istiyorum. Ancak ve eğer Veri başarıyla kaydediliyorsa. – Riki

+0

Öyleyse neden bir yönlendirmeyi yapmanıza izin veren standart bir form kullanmıyorsunuz? Veriler doğru şekilde kaydedilmediyse, yalnızca görünümü döndürür ve doğrulama hatalarını görüntüler. –

cevap

8

AJAX çağrıları aynı sayfada kalmak. Örneğin

[HttpPost] 
public JsonResult RegisterAndLogin(UserRegisterViewModel model) 
{ 
    bool successToStoreData = SomeMethod(model); 
    if (successToStoreData) 
    { 
    return null; // indicates success 
    } 
    else 
    { 
    return Json("Your error message"); 
    } 
} 

için, JSON dönmek için denetleyici değiştirmeniz gerekir ve RedirectToAction` çalışmıyor `yüzden

$.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 
    } 
    } 
}) 
İlgili konular