Asp.net mvc 4 路由配置MVC

Asp.net mvc 4 路由配置MVC,asp.net-mvc-4,routes,Asp.net Mvc 4,Routes,我有一个关于MVC路由的问题。鉴于路线: routes.MapRoute( name: "Venda", url: "{controller}/{action}/{automovelId}/{consumidorId}/{revendedoraId}", defaults: new { controller = "Venda", action = "Index", automovelId = UrlParameter.Opt

我有一个关于MVC路由的问题。鉴于路线:

routes.MapRoute(
    name: "Venda",
    url: "{controller}/{action}/{automovelId}/{consumidorId}/{revendedoraId}",
    defaults: new {
        controller = "Venda",
        action = "Index",
        automovelId = UrlParameter.Optional,
        consumidorId = UrlParameter.Optional,
        revendedoraId = UrlParameter.Optional
    }
);
我希望能够像这样调用编辑操作:

/Venda/Edit/1/1/1
/Venda/Edit?automovelId=1&consumidorId=1&revendedoraId=1
但它只有在这样调用时才起作用:

/Venda/Edit/1/1/1
/Venda/Edit?automovelId=1&consumidorId=1&revendedoraId=1

如何执行此操作?

您不能在一条管线中使用多个可选参数。只有最后一个参数可以是可选的。

Stephen Muecke,我必须删除最后两个可选参数?@Yuri,这将为您提供更多关于可能的解决方法的信息。我几分钟前在这个博客上看到过。但我还是有问题。这三个参数是我的主键。@Yuri,只需从前两个参数中删除
UrlParameter.Optional
,然后确保在调用操作时传递这些参数method@Yuri,这里是一个示例
routes.MapRoute(名称:“EmployeeTimeSheet”,url:“Report/TimeSheet/{id}/{date}”,默认值:new{controller=“Report”,action=“TimeSheet”}
和操作方法`public ActionResult TimeSheet(int?id,DateTime?date)`