2013-04-20 23 views
0

ASP .NET MVC 3 +中是否有可能根據特定狀態爲多個操作設置相同的路由?ASP .NET MVC 3基於標準的多個操作的相同路由

例如,在LinkedIn或某些類似的網站上,相同的路線http://site-domain/home 用於多個視圖。

如果用戶未登錄,主頁將顯示歡迎視圖,但是如果用戶已登錄,那麼用戶的主頁將顯示其通知和其他用戶特定數據。

根據用戶的登錄狀態或任何其他類型的數據控件,我們是否可以使用相同的路由url來路由到不同控制器的不同操作?

注意:在同一個動作中顯示不同的視圖不是一個選項,因爲兩個動作具有完全不同的邏輯。

+0

爲什麼不保持動作一致並根據特定狀態更改視圖? – shakib 2013-04-20 21:33:08

+0

因爲這兩個操作中的邏輯完全不同,所以無法僅通過更改視圖來處理 – 2013-04-20 21:37:20

回答

0

當然。你有幾個選擇,第一個是根據他的一些屬性爲用戶提供一個你選擇的視圖,但是你對視圖模型的控制有限。

public ActionResult SomeAction(){ 

if(User.Identity.Name == "Admin") 
    return View("AdminView"); 
else 
    return View("SomeOtherView"); 
} 

另一種選擇是用戶一旦重定向控制器方法到另一個動作中,如指示:http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another-action-and-passing-information-to-it.aspx

當然總是有基於一些用戶屬性顯示在網頁上的局部視圖的選擇。如果你也許可以提供一些關於你的項目的信息,這將有助於尋找解決方案。

+0

這不是我的問題的答案。我不想顯示另一個視圖,我想要轉到其他操作。這與重定向也不同。 – 2013-04-20 21:38:35

+0

那麼爲什麼不使用返回RediredtToAction(「ActionName」)的操作名稱對應於該用戶的相應操作? – smisak 2013-04-20 21:45:21

+1

順便說一句,如果這是你正在尋找http://stackoverflow.com/questions/8600949/asp-net-mvc-2-actions-for-the-same-route? – smisak 2013-04-20 21:46:50