【发布时间】:2017-07-04 10:29:13
【问题描述】:
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 异常,这是可以理解的,但是为什么 Details 中的 id 不会发生这种情况?
我可以更改MapRoute(当前为:url: "{controller}/{action}/{id}")以允许我使用自己的类型来实现它吗?
到目前为止我已经尝试过:
我只想为我的一个方案(例如http://localhost:port/Controller/MyMethod/{ViewType})执行此路由,我尝试了this,但它似乎没有做任何事情:
routes.MapRoute(
"MyRoute",
"MyController/Index/{MyEnum}",
new { controller = "MyController", action = "Pending" }
);
【问题讨论】:
-
是的。但是,您应该添加一条新路线来处理这种情况。
标签: c# asp.net asp.net-mvc routeconfig