2011-09-30 66 views
0

我正在處理我的第一個真正的ASP.NET MVC項目,我需要一些建議。ASP.NET MVC路由 - 通過重定向保持參數

所以,假設我的應用程序有一個管理部分,您可以在其中創建每個部門中的公司,部門和用戶。

公司 - >系 - >用戶

現在我的網址正在尋找這樣的:

Companies/Index 
Departments/Index?companyId=1 
Users/Index?companyId=1&departmentId=2 

它變得複雜,因爲如果我必須從用戶列表重定向到部門列表,我必須做一些事情,如:

return RedirectToAction("Index", "Departments", new { companyId = model.CompanyId }); 

當事情變得更加嵌套,我不得不開始傳遞更多參數,使控制器動作有上下文他們需要。

有沒有更好的方法來構建具有這種「嵌套」功能的控制器的路由?他們應該看起來更像: 公司/ {id} /部門/ {id} /用戶?

是否有一篇很好的文章,有人可以聯繫我,可以提供一些最佳實踐的建議,當涉及到這一點?

回答

0

你只需要在你的Global.aspx上添加更多路線,它將Urls映射到頂部具有更多特定路線的動作 。 你可以有這樣的事情:

routes.MapRoute( 「用戶」, 「用戶/索引/ {companyId} {} DepartmentID的」,新{控制器= 「」,行動= 「」}) routes.MapRoute( 「department」,「Departments/Index/{companyId}」,new {controller =「」,action =「」}) routes.MapRoute(「company」,「Companies/Index」,new {controller =「」,action =「」})

+1

感謝您的回覆。我知道我可以像這樣手動設置路由,但我仍然需要將多個路由參數傳遞給新控制器。例如,我上傳了一張位於「公司/ 4 /部門/ 16 /用戶/ 26 /照片/新」的用戶的照片,並且在該操作中我需要重新導向到照片列表,這使我通過companyId,departmentId和userId手動添加到新路線。這看起來像很多手動編碼,有很大的出錯空間。我基本上要問的是,它就是這樣,還是有更好的模式可以遵循?謝謝! – jdraper3

+0

@ jdraper3 - 你是否優雅地解決了這個問題?我目前面臨着同樣的情況,在互聯網上找不到很多幫助。任何提示您的決議將不勝感激。謝謝 – Luc

+0

嘿,我不再做很多直MVC了,現在大多使用角度,但是當時並沒有真正的魔術解決方案。將值存儲在模型中並將它們傳遞給RedirectToAction方法就好了,我肯定會推翻它。 – jdraper3