2013-03-29 10 views
5

Aşağıdaki kod bloğum var. Kodun,Kod, response.redirect'i nasıl geçebilir?

'u nasıl geçebileceği konusunda kafam karıştı. Geçmişte otomatik olarak yürütmeyecek herhangi bir satır düşündüm. Burada basit bir şey eksik mi? Hata ayıklayıcısını aslında sonraki satırları çalıştırıyorum.

public ActionResult Index() 
    { 
     Response.Redirect("~/Default.aspx", true); 

     string year = 
      Utils.ConvertCodeCampYearToActualYear(
       Utils.GetCurrentCodeCampYear().ToString(CultureInfo.InvariantCulture)); 
     var viewModel = GetViewModel(year); 
     return View(viewModel); 
    } 
+1

MVC çerçevesinin nasıl çalıştığına dair bir yanlış anlama geldiğini düşünüyorum. Bu bir webform yaklaşımıdır. ActionResults, Eylemler işlevini döndürmelidir. Webformlarda bile –

+0

, Response.Redirect yürütmeyi durdurmuyor, tüm kodlar hala –

cevap

4

Tüm Response.Redirect() belirtilen URI (gerçekten) ayarlanır location= yanıt başlığını yapar ve 302 Found http durumunu ayarlar. Ayrıca, yeni URI'ye bir bağlantı ile yanıtta biraz saplama HTML'si yazar, ancak bu sadece bir dekorasyon.

İşlemin bir bool bayrağı ile sürdürülüp sürdürülmeyeceğini belirtmenize izin veren aşırı yüklemeyi kullanmazsanız, işleme devam eder. Bu bool bayrağı doğruysa, yanıt işleme, isteği işleyen iş parçacığının iptal edilmesiyle sonlandırılır ve bir ThreadAbortException yan etki olarak atılır.

+0

Herkese teşekkürler! harika cevaplar. Reflektörle ona bakmalıydım ve bunu biliyordum. “Webforms” düşüncesine tekrar girdim ve gerçekten neler olduğunu düşünmeyi unuttum. –

8

return gerekiyor. Bu bir fonksiyon. Durumda da Redirect kullanabilirsiniz:

return Redirect("~/Default.aspx"); 
+0

yürütülür ve daha sonra dönüş boşluğunun aktivitesini yapar mı? –

+0

Hayır, bir ActionResult döndürdüğü için bırakın – mattytommo