我有llooks這樣的ReportController:如何使用不同的參數爲同一個控制器方法設置不同的路由?
public IActionResult ReportDetails(int? reportId){
....
}
和
public IActionResult ReportDetails(int? reportId, bool ? approved) {
....
}
,我試圖做一些路由,卜失敗。寫在Startup.cs實際代碼:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "ReportDetailsValidation",
template: "descriptionValidation",
defaults: new { controller = "Report", action = "ReportDetails", reportId ="{reportId}", approved = "{approved}" }
);
routes.MapRoute(
name: "ReportDetails",
template: "description",
defaults: new { controller = "Report", action = "ReportDetails"}
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
正如我所看到的,我需要符合以下網址:
/報告/ ReportDetails reportId = 7第一和
/報告/ ReportDetails ?reportId = 7 &批准=真爲第二
在標準你會得到所提到的異常,但具有相同名稱的多個方法完全沒有問題。你只需要通過使用ActionMethodSelectorAttribute來幫助選擇過程(參見我的答案)。但是在這裏介紹的特定情況下,你是沒有必要的,並且使用默認參數更容易。 –