2011-01-05 69 views
3

所以我有一個叫EmployeeController控制器,所有的意見都在/員工。定製MVC路線:改變其中用於控制器的視圖位於

我想創建一個路由,這樣EmployeeController將使用/員工和/員工/添加,而不是/僱員和/員工/添加。

我不斷尋找如何改變路線去不同的動作的文章,但我找不到任何方式做到這一點。

回答

2

我覺得你與路由混亂意見。 ASP.NET MVC依賴於約定,在這個例子中,它將路由的控制器組件應用於查找控制器。您可以定義一條新路線:

routes.MapRoute("Employees", "employees/{action}", new { 
    controller = "Employee", 
    action = "Index" }); 
+0

馬修 - 你可以使用一個類似的路線約定,如果你正在尋找的SO結構從../questions->../questions/tagged/asp.net-mvc等去......即「標籤」控制器不在「最高」級別,而是由問題控制員提供支持。只是有點困惑,我已經有一段時間了 – 2011-01-07 10:42:18

+0

我認爲需要記住的重要一點是,你實際上並沒有被限制在一個'{controller}/{action}/{id}'路線結構中,這只是MVC路由的標準*約定*。在你的例子中,你可以在'questions/{id}/{name}/{comment}'之前定義'questions/tagged/{tag}',並且仍然有完全有效的路線。 – 2011-01-07 11:47:22

0

爲什麼不只是將EmployeeController重命名爲EmployeesController?那麼你不必亂搞路線。

當然,你便要改變你的瀏覽\員工文件夾視圖\僱員。

1

其實,有2個不同的問題:

  • 第一個是關於路由映射,在這裏我想對馬修·Abbott和Bugai13建議簡單的解決方案達成一致。
  • 第二個是關於「視圖」文件夾約定和查看文件分辨率。如果您需要一些自定義邏輯,您可以繼承ViewResult並更改它找到適當的View文件的方式。您還可以深入瞭解框架並調整View的方式,方法是創建您自己的IViewEngine或自定義其中一個現有的。

看來雖然,所有你需要的是第一件事情 - 只是提供像employees/{action} URL模式更具體的路由映射,就大功告成了。

相關問題