MVC控制器執行重新導向

來源:互聯網
上載者:User

標籤:style   class   blog   code   java   http   

  前面瞭解過了動作方法可以返回一個視圖,其中出現了會去渲染非預設動作方法名為名稱的視圖,這種情況下,其實可以重新導向到渲染該視圖的動作方法上去,而不是由自己去渲染該視圖。

說的有點繁瑣,可以這樣理解

return View("Nice");//可以使用==>return RedirectToAction("Nice");或者return View("Nice","Good");==>return RedirectToAction("Nice","Good");結果都是一樣的,除非Nice的Action中有一些需要傳遞給Nice視圖的資料

對於這個重新導向,我本人目前還是有些不是很理解“臨時重新導向”和“永久重新導向”RedirectToActionPermanent
不得不說MVC的控制器輔助方法真的很多,一個重新導向居然又分為

  1.RedirectToRoute//定向到路由系統的URL

  2.RedirectToAction//定向到動作方法

其實這兩個輔助方法做的都是同樣的事,都是將當前的路由重新導向到另一個動作方法,然後去渲染一個視圖返回給使用者。

不過現在問題出來了,如果是重新導向了的話,瀏覽器是會遞交一個全新的Http請求的,這意味著我們是去了對原先請求細節的方法,意思就是我們不能訪問這個動作方法中的資料了,假如我們就是想要儲存重新導向之前

動作方法中的資料該怎麼辦,那麼我們可以使用TempData特性,該特性灰常神奇,不像一個全域變數一樣,應用程式關閉才會被釋放,它是當第一次被使用讀取以後,就會被標記刪除,然後在請求被處理完成以後正式被刪除,是不是很Nice呢,不佔用多少記憶體,又可以跨請求傳遞資料,又可以自動清除記憶體~~~

使用方法如下

?
1 2 3 4 5 6 7 8 9 10 public RedirectToRouteResult Index(){   TempDate["Nice"] = "Terry";   TempData["Reason"] = "中獎啦";   return RedirectToAction("Nice"); }   public ViewResult Nice(){   Nice nice = new Nice{Name=TempData["Nice"],Reason=TempData["Reason"]};   return View(nice); }

 如果你還不死心,想要這個跨域傳遞的資料再保留多一會,可以使用

TempData.Keep("Nice");

這樣你的nice資料就可以再保留一次,下次讀取完畢,請求完成還是會被刪除的,如果你仍舊不想被刪除,那我只能推薦你使用session了。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.