C# Net MVC:如何使用2个参数配置操作的路由?
我的控制器中有两个参数的动作。 我使用JS函数从Razor视图调用它们,如下所示:C# Net MVC:如何使用2个参数配置操作的路由?,c#,asp.net-mvc,routeconfig,C#,Asp.net Mvc,Routeconfig,我的控制器中有两个参数的动作。 我使用JS函数从Razor视图调用它们,如下所示: function deleteAddress(addressId) { url = '@Url.Action("Delete", "Addresses",new { addressId = "3",actionRouteAfterActionFinish="SelectAddress"})'; openLink(url); } 以下是我在控制器内的行为声明: public async Task&
function deleteAddress(addressId) {
url = '@Url.Action("Delete", "Addresses",new { addressId = "3",actionRouteAfterActionFinish="SelectAddress"})';
openLink(url);
}
以下是我在控制器内的行为声明:
public async Task<ActionResult> Delete(int addressId,string actionRouteAfterActionFinish){
...
...
}
但当我尝试使用下面的RouteConfig
时,它不起作用,当从Razor视图调用方法时,第二个参数设置为null
。我想知道如何重写RouteConfig
以管理具有两个参数的操作
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//enabling attribute routing
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Intro", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "TwoParamterAction",
url: "{controller}/{action}/{parameter1}/{paramter2}"
);
我用
TwoParamterAction
规则对Default
规则重新排序,但没有帮助。这是因为参数名称不匹配。路由url中的参数的顺序可以与方法参数的顺序不同
因此,名称必须匹配
routes.MapRoute(
name: "TwoParamterAction",
url: "{controller}/{action}/{addressId}/{actionRouteAfterActionFinish}"
);
这应该是可行的,因为名称匹配。那么为什么第一个参数
addressId
被正确地传递到addressId
,而默认路径中的参数名称是id
?
routes.MapRoute(
name: "TwoParamterAction",
url: "{controller}/{action}/{addressId}/{actionRouteAfterActionFinish}"
);