這是我設立的一個例子:只有一個動作,我可以製作一條沒有動作的路線嗎?
public class UserController : Controller
{
public ActionResult Index(int? id) { ... }
[HttpPost]
public ActionResult DoSomething(int id) { ... }
public ActionResult Search([params]) { ... }
}
,我希望能夠通過這些途徑來訪問它們:
/app/User/{id}
/app/User/DoSomething/{id}
/app/User/Search/
我試圖建立這樣我的路線,但後來如果我嘗試導航到/app/User/Search/
或發佈到/app/User/DoSomething/
,Index
而不是命中操作。
routes.MapRoute(
name: "UserWithoutIndex",
url: "User/{id}",
defaults: new { controller = "User", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我該怎麼做?我認爲在上面的UserWithoutIndex
路由之前,只需在自己的路由中指定每個特定的操作即可,但我有多個操作,而且我不想爲控制器中的每個操作創建特定的路由。
所以我可以只將格式約束只接受一個數字,對吧? – xdumaine
是的,你應該可以做到這一點。 – asymptoticFault
使用類似這樣的方法來匹配一個或多個數字'@「\ d +」'。 – asymptoticFault