對不起,如果這是一個總的noob問題,但我想創建特定於「年份」顯示內容的控制器。我可以擁有一個使用數字的MVC 4控制器嗎?
當我嘗試創建「2015Controller」時,它在數字前面插入下劃線,隨後在視圖名稱中插入下劃線。 (不是友好的網址,我正在尋找。)
也許我是一個完整的塗料,並已錯過了這個船,但我想分離內容爲基於年份的頁面顯示,因爲我有多個我希望通過簡單的網址訪問多年的內容。
對不起,如果這是一個總的noob問題,但我想創建特定於「年份」顯示內容的控制器。我可以擁有一個使用數字的MVC 4控制器嗎?
當我嘗試創建「2015Controller」時,它在數字前面插入下劃線,隨後在視圖名稱中插入下劃線。 (不是友好的網址,我正在尋找。)
也許我是一個完整的塗料,並已錯過了這個船,但我想分離內容爲基於年份的頁面顯示,因爲我有多個我希望通過簡單的網址訪問多年的內容。
這聽起來像是XY Problem。
我可以高度肯定地說你應該每年創造一個新的控制器,而不是而不是。這會給你帶來巨大的維護負擔和臃腫的代碼(你每年都必須創建一個新的控制器和一個新的控制器類)。
您應該創建一小組控制器(甚至可能只有一個控制器),添加通過URL傳遞一年的能力,並設計它們以動態加載並提供基於指定年份的內容。
下面介紹如何完成「通過URL傳遞一年」部分。
添加爲在RouteConfig.cs第一路線:
routes.MapRoute(
name: "Year",
url: "{year}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional},
constraints: new{ year = @"\d{4}" });
這告訴一個URL來在任何時間與4位開始的路由模塊,它應該將請求發送到Home
控制器(如果需要,可以更改),並將這4位數字作爲路由值,稱爲year
。
然後,在你HomeController
,你可以先走一步,在你的行動增加year
作爲參數:
public ActionResult Index(string year)
{
// use year to fetch and prepare content
return View();
}
public ActionResult Schedule(string year)
{
// use year to fetch and prepare content
return View();
}
因此,如果一個訪問者瀏覽到http://mydomain/2015
或http://mydomain/2015/Index
,該請求將被髮送到Index
2015
的值爲year
。如果訪問者導航到http://mydomain/2016/Schedule
,那麼該請求將被髮送到Schedule
動作,其中year
值爲2016
。
所以,你應該全部設置。如果您想根據年份來區分視圖,則可以添加多個視圖,並將所需的值傳遞給幫助器以顯示所需的視圖。
如果每年的內容和邏輯之間沒有關聯,請使用區域。做一個2014區,2015年地區等
地區有據可查的微軟asp.net網站
感謝所有幫助。我結束了與「地區」,因爲它對我個人更有意義。每年的內容都是有限的,它使我能夠看到我感到舒適的事物結構。
對我而言,工作必須在製圖過程中取得進展。我沒有完全理解它,當我被迫在開發中受到壓力時,結果有點令人沮喪。
本網站對於我從中獲得的所有信息都非常瞭解,非常感謝!
您可以將URL的任何部分映射到控制器名稱,操作名稱或參數名稱 - 而不僅限於此特定順序。所以你可以將你的'/ 2014 /'URL段映射到任何東西,而不僅僅是一個控制器名稱(我將映射到一個方法的參數)。你能展示你的網址的例子嗎? – GSerg 2014-12-27 20:29:56
你是否期望你的控制器在一年之間變化很大,或者你是否希望能夠通過像http:// mydomain/2015/Page這樣的URL傳遞一年? – JLRishe 2014-12-27 20:30:23
由於它是一個社區影院網站,內容因年份而異,因此我希望能夠使用mydomain/2015/page過程。 – 2014-12-27 20:34:44