2012-02-14 63 views
1

我想實現什麼stackoverflow與URL。像url重定向的stackoverflow

domain.com/questions/1234/ properTitle < - 很好!

domain.com/questions/1234/ wrongTitle < - 重定向到domain.com/questions/1234/ properTitle

但我不希望將數據庫聯繫的兩倍。

例如,在問題控制器操作中,我已經查詢了基於1234問題ID的所有信息。我不想重定向並丟失所有這些信息,然後再次查詢。我應該把它放在TempData或什麼?有效的方法來處理這個問題?

回答

1

我認爲手動緩存和檢索應用程序中的數據會更復雜(甚至可能效率更低)。您的數據庫服務器可能會緩存結果,第二個查詢不會很長。

更新:您可以重定向到以模型作爲參數的重載操作。這可能看起來有點像這樣:

return RedirectToAction("Action", 
         new { 
           id = 1234, 
           title = "properTitle", 
           model = myAlreadyRetrievedModel 
         }); 
+0

+1。我只是通過chrome運行它,並調用沒有標題的頁面,只通過問題id和空白標題進行調用。請求:'請求URL:http:// stackoverflow.com/questions/9274755 /'。第一個電話沒有響應,但似乎直接重定向到第二個電話。第二個調用是這樣的:'Request URL:http:// stackoverflow.com/questions/9274755/stackoverflow-like-url-redirect'然後返回頁面作爲響應。這似乎表明最初的操作將始終檢索模型,並且正如您所說的將標題/模型傳遞給重定向。 – Nope 2012-02-14 11:04:15

+0

如果您通過初始請求將提前完整標題,則返回響應。似乎有類似於'如果標題來自url ==標題從模型然後返回響應,否則返回使用標題從模型或類似的重定向'的行動中的代碼。 – Nope 2012-02-14 11:07:22