2013-04-26 65 views
0

我有幾個idententical意見。可以說:(1)過時產品(2)現場產品。獲取視圖名稱,其中調用動作方法

UI幾乎相同,包括這些視圖調用的操作方法。目前,我已經走了「基於狀態」的編碼。

public ActionResult GetProducts(string productType, bool isObsolete) 
    { 
     //some common code... 

     //status passed from the view 
     return isObsolete ? View("ObsoleteProducts") : View("LiveProducts"); 
    } 

我不希望意見通過狀態 - isObsolete。相反,動作方法應該檢測哪個視圖調用了我(動作本身)。

我挖成Request對象及其屬性,但它ofcourse有「... \的GetProducts」爲URI ..

+0

真的我不明白,這是你的問題/麻煩? – 2013-04-26 15:53:42

+0

Zach ..它關於...「動作方法如何知道哪個視圖(父級)稱他爲」或「動作方法如何在運行時知道自己的路徑」 – StartingFromScratch 2013-04-26 16:29:18

回答

2

你是那種通過詢問該視圖實際上沒有傳遞任何信息,限制自己的選擇回來讓你知道請求來自哪裏。

也就是說,您很可能需要查看請求的UrlReferrer屬性以查看請求來自哪裏。

http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

+0

謝謝..它的工作原理... catch:請求生成器視圖不能作爲默認(開始)視圖,因爲在這種情況下不會有任何創建者。 – StartingFromScratch 2013-04-26 16:03:45

+0

是的 - 如果有人直接鏈接到外部網站的GetProducts,這也將失敗,因爲它贏得了不是來自liveProducts或obsoleteProducts。如果推薦人是你不期望的東西,那麼確保你有一個默認的應變集。 – Tommy 2013-04-26 16:15:57

+0

覆蓋捕獲使得實現脆弱..離開了appraoch ..在最後其不是「那」不好給責任視圖傳遞(維護)自己的狀態。 – StartingFromScratch 2013-04-26 16:27:26