首页 > 解决方案 > 具有多个参数的 Mvc 属性路由问题

问题描述

我在 Pro 控制器中定义了 Details 方法,我想将此方法映射到多种类型的 url。

请检查下面的代码,我已经尝试过使用一个参数的另一种方法并且它正在工作,但在这种情况下它不适用于多个可选参数。

[Route("Vehicles/Details/{no}/{aTab?}/{rs?}/{fp?}")]
[Route("Pro/Details/{no}/{aTab?}/{rs?}/{fp?}")]
[Authorization(SA.PMV, Rights.View)]
public ActionResult Details(string no, string aTab, string rs, bool fp = false)
{
    return View();
}

调试中显示错误:

在控制器“ProController”上找不到公共操作方法“详细信息”。

当我请求以下 URL 时:

http://www.example.com/Pro/Details?no=sT90Fjts0qI$&aTab=viewdetails&rs=viewdetails&fp=false

标签: c#asp.net-mvcasp.net-mvc-routingattributerouting

解决方案


定义路由的最佳方法是进入 route.config,如下所示

routes.MapRoute("namesearch","Details/{no}/{aTab}/{rs}/{fp}",
            new { controller = "controllerName", action = " Details", 
                 no = UrlParameter.Optional, aTab = UrlParameter.Optional,
                 rs = UrlParameter.Optional ,fp = UrlParameter.Optional});

推荐阅读