ASP.NET MVC 为控制器方法提供了简单的模板,例如Details
, 并且可以有类似的东西:
public ActionResult Details(int id)
{
// do something
}
这可以通过以下方式访问:http://localhost:port/Controller/Details/id
我正在尝试做的是提供不同的类型,例如:
public enum MyEnum
{
All,
Pending,
Complete
}
然后我设置我的控制器方法,如:
public ActionResult MyMethod(MyEnum myEnum = MyEnum.Pending)
{
// do something
}
这适用于:http://localhost:port/Controller/MyMethod/
因为它使用默认参数。
要指定一个不同的论点,我必须这样做http://localhost:port/Controller/MyMethod?myEnum=All
并且有效。
我想知道,我是否可以做http://localhost:port/Controller/MyMethod/All
而不是使用?myEnum=All
?
在尝试这样做时,我得到一个可以理解的异常,但为什么in404
不会发生这种情况?id
Details
我可以更改MapRoute
which is current:url: "{controller}/{action}/{id}"
以允许我用自己的类型实现它吗?
到目前为止我已经尝试过:
我只希望对我的一个方案进行这种路由强制,例如http://localhost:port/Controller/MyMethod/{ViewType}
,我尝试了这个,但它似乎没有做任何事情:
routes.MapRoute(
"MyRoute",
"MyController/Index/{MyEnum}",
new { controller = "MyController", action = "Pending" }
);