2009-08-21 21 views
8

Bir görüntüleme sayfasında olduğumu ve denetleyici A'da bir RedirectToAction döndürmesi aracılığıyla B denetleyicisindeki başka bir eylemi çağıran bir eylem yöntemini çağırdığım bir senaryo var ve bu eylem zaten Im olduğumu görüntüler.RedirectToAction sayfayı yenilemiyor sayfa

Bu iki eylemi gerçekleştirdiği sistem güncellemelerini yansıtmak için sayfanın yenilenmesini istiyorum, ancak MVC, aynı görünüme döndüğümde sayfanın yenilenmesi gerekmediğine karar veriyor gibi görünüyor. Yenilemeyi nasıl zorlayabilirim?

Örnek: Ben gerçekten emin değilim çünkü burada biraz belirsiz olacağım ama daha önce bu satırlar boyunca bir şey görmüştüm (ve başka kimsenin yanıtlamaktır)

//user is on A/index, and submits a form that calls this in contoller B 
public ActionResult ActionInControllerB() 
{ 
    //do stuff 
    return RedirectToAction(ActionNames. ActionInControllerA, ControllerNames.A); 
} 

public ActionResult ActionInControllerA() 
{ 
    //do stuff 
    return View("index"); 
} 
+0

Yaptığınız şey mantıklı geliyor, ve evet sonuç anlamlı değil. 2 farklı kontrol cihazında 2 yöntemin kodunu yapıştırır mısın? –

+0

İstediğiniz kodu ekledik. Teşekkürler David – Dan

+0

hmm, evet orada hiçbir şeyden şüphelenilen olarak. Cevabım hakkında ne düşündüğünüzü aşağıya bakın ... –

cevap

0

. Sorun şu ki, güncelleme işleminin yönlendirmeden önce henüz işlenmemiş veya temizlenmiş olmamasıdır. Örneğin, NHibernate bazen yanıt işlendikten sonra düşünene kadar db'ye bir güncelleme yapmayı bekler.

Eğer durum buysa, o zaman A kontrol cihazında ne getiriyor olursanız olun, bu değişiklikler değişmez. Belki de bir şekilde işlenecek veritabanı işini zorlamayı deneyebilirsiniz.

Üzgünüz, ama aklıma gelen tek olasılık. Google-fu kıyafetinizi ve kafa bandınızı takmanız gerekecek!

+0

Ne yazık ki bu sorun değil. ORM, tüm çalışmalarını tamamladı ve her iki durumda da görünmesi gereken diğer istemci taraf bitleri var. – Dan

+0

oh well :-(Eğer gerçekten takıldınız bir Response.Redirect (Request.Url.ToString()) deneyebilirsiniz, ancak eğer bu çalışıyorsa, o zaman onun bir geçici çözüm ve dağınık bir. –

0

Projemde böyle bir sorun vardı. Ne olabilirdi, varsayim, ActionInControllerB içinde görünümünüzü güncelliyorsunuzdur, sonra RedirectToAction bu görünümü temizlerken. GET: controller'ımda güncelleme yapmadığım ve sadece POST: controller'da güncellenmekte olan böyle bir problem yaşadım. Bu nedenle, istediğim şey ortaya çıkmadı. Bu yüzden ekrandaki değişikliklerin doğru yerde gerçekleştiğinden emin olmanızı öneririm.

MVC'ye oldukça yeni geldim, bu yüzden sorunuzu yanlış yorumlamaktan ve eğer öyleyse özür dilerim. Ama umarım bu size en azından biraz yardımcı olur.

7

Önbelleğe alma sorunları yaşadığınızı tahmin ediyorum.

ile ActionInControllerB ve ActionInControllerA yöntemlerini süsleyin: Ben benzer bir sorun vardı

[OutputCache(Location=System.Web.UI.OutputCacheLocation.None)] 
1

ama denetleyici dosyasına görünüm dosyadan ajax çağrısından başladı. Denetleyici, DB'ye bir güncelleştirme yaptı ve görünümü yenilemek için RedirecToAction'ı çağırdı. Ama hiçbir yenileme ... Yukarıdaki cevapların hiçbiri bana yardımcı olmadı. Ben çözen tek yolu görünüm dosyasından bir eylem çağırmak için farklı bir yöntem kullanılarak yapıldı: Ben beklendiği gibi

Bu noktada her şeyi itibaren
window.location = "Experiment/DeleteExperiment?experimentId=" + $("#DeleteExperimentButton").val(); 

harekete geçti.

İlgili konular