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
?
尝试这样做后我得到了404
异常是可以理解的,但为什么不会发生这种情况id
in Details
?
我可以更改MapRoute
目前是:url: "{controller}/{action}/{id}"
让我用自己的类型来实现它?
到目前为止我尝试过的:
我只想为我的方案之一执行此路线,例如http://localhost:port/Controller/MyMethod/{ViewType}
, 我试过this https://learn.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/creating-custom-routes-cs但它似乎没有做任何事情:
routes.MapRoute(
"MyRoute",
"MyController/Index/{MyEnum}",
new { controller = "MyController", action = "Pending" }
);