我正在處理ASP.NET MVC任務列表,我想在過濾列表時使用URL路由。我有一個這樣定義的操作方法:帶有可選URL段的ASP.NET路由
public ActionResult List(int categoryID, bool showCompleted, TaskFilter filter);
enum TaskFilter { MyTasks, MyDepartmentTasks, AllTasks }
我想我的網址看起來像這樣:
/Tasks/Category4/MyTasks/ShowCompleted/
/Tasks/Category4/MyDepartment
/Tasks/Category4/
的Category#
段將始終存在。我希望MyTasks|MyDepartment|AllTasks
細分受衆羣是可選的,如果不存在,則默認爲AllTasks
。我也想ShowCompleted
是可選的,默認爲false。
這種路由是可能的,還是我將不得不倒退,只是使用查詢字符串參數?
跟帖/加分問題:如果我也想對動作方法的第四個參數通過一個看起來像Today|Day2Through10
(默認Today
如果缺席)任務的截止日期來過濾?
謝謝。出於好奇,我必須做什麼才能將一個TaskFilter作爲一個Enum而不是一個字符串傳遞給操作方法?哪一部分路由基礎設施需要擴展/覆蓋? – 2009-10-20 16:01:42
@Brant Bobby:這是一個有趣的問題。通過爲你的TaskController實現IController而不是Controller可能是可能的。你會在哪裏實現Execute方法,首先將字符串更改爲TaskFilter類型,然後用它來調用你的List方法。 – 2009-10-20 16:35:19
@Brant Bobby:我也注意到你仍然可以從Controller繼承,並重寫Execute方法。在那裏還有其他一些有趣的方法可能是有可能的。 – 2009-10-20 16:55:46