Asp.net-Mvc
獲取目前動作和控制器並將其用作 Html.ActionLink 中的變數?
我需要能夠動態檢索您所在頁面的目前操作和控制器名稱,並實際使用它們來創建一個新的 HTML.ActionLink,它連結到相同的操作和控制器名稱,但位於不同的區域。所以我想我需要檢索目前的動作和控制器名稱作為變數來建構一個新的 HTML.ActionLink。
因此,如果我在 www.site.com/about 頁面上,我需要動態生成指向 www.site.com/es/about 頁面的連結。
我基本上在一個單獨的區域文件夾中建構了我的站點的西班牙語翻譯版本(具有相同的命名控制器、操作和視圖,只是內容都是西班牙語)。我需要使用者能夠在頁面的英文版本(這是預設設置,並且駐留在根站點視圖中)和西班牙語版本(其視圖駐留在區域文件夾“es”中)之間來回切換他們目前在哪個頁面上。我不能“硬編碼”這些連結,因為我需要在一個共享的局部視圖中使用它,即每個頁面上使用的 _Layout 中的 _topNavigation。
如果我需要澄清,請告訴我。我確信在本地化應用程序時使用“區域”並不是真正的方法,但我仍在努力自學 asp.net MVC。我閱讀了許多關於本地化的教程和範例,但我無法讓它們工作或有意義。
我還應該補充一點,我已經知道如何使用 HTML.ActionLink 在區域之間來回切換。我已經成功地為西班牙語(es)區域中的任何視圖以及預設站點中的任何視圖創建了正確的 HTML.ActionLinks。所以這不是我的問題。
任何幫助是極大的讚賞!謝謝!
用於
ViewContext.RouteData確定目前的 Controller 和 Action:@Html.ActionLink("Spanish Version", ViewContext.RouteData.Values["action"] as String, ViewContext.RouteData.Values["controller"] as String, new { Area = "es" })
試試這個:
Html.ActionLink("Espanol", "action", "ControllerName", new { Area = "es" }, null)