我有一些使用Asp.Net Futures RenderAction方法呈現(xiàn)的部分動作。其中一些在處理表單中的表單后執(zhí)行重定向?,F(xiàn)在,我已升級到Asp.Net MVC 2 RC,它給我一個錯誤“不允許子操作執(zhí)行重定向操作”。我簽出了源代碼,并發(fā)現(xiàn)了引發(fā)異常的行。為了解決這個問題,我可以創(chuàng)建一個自定義的RedirectResult,但是在我開始之前,我想了解為什么框架首先不允許它。一定有很好的理由,也許我也不應(yīng)該這樣做。有人知道這種限制的原因嗎?謝謝
3 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊
存在限制是因為MVC已經(jīng)開始向客戶端呈現(xiàn)視圖。從這一點重定向的效果是不確定的。它可以完美地工作,可以繼續(xù)呈現(xiàn)原始視圖而無需重定向,它可以引發(fā)其他異常等。
由于執(zhí)行此操作的結(jié)果是不確定的,因此框架會阻止它。實際上,出于類似的原因,不應(yīng)使用RenderAction呈現(xiàn)視圖(或類似視圖的內(nèi)容)以外的任何內(nèi)容。
在您的特定情況下,外部操作應(yīng)重定向。如果您最終還是要從視圖內(nèi)進(jìn)行重定向而又不向用戶顯示任何內(nèi)容,那么實際上沒有任何目的首先瀏覽視圖,因為外部操作可以適當(dāng)?shù)貙⒐ぷ魑薪o它擁有。

子衿沉夜
TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
嘗試在“兒童操作”中使用類似以下內(nèi)容:
ControllerContext.HttpContext.Response.Redirect(ControllerContext.HttpContext.Request.Url.ToString());
- 3 回答
- 0 關(guān)注
- 886 瀏覽
添加回答
舉報
0/150
提交
取消