做了一个噩梦,希望我只是愚蠢。
我有以下控制器操作:
<HttpGet()>
Function News() As ActionResult
End Function
<HttpGet()>
Function News(ByVal id As Integer) As ActionResult
End Function
我希望它聪明一点,如果我在 url 中没有 ID,则转到第一个,如果有,则转到第二个。
我收到以下错误:
当前对控制器类型“MarketsController”的操作“新闻”的请求在以下操作方法之间不明确 > 在以下操作方法中: System.Web.Mvc.ActionResult News() on type TradeChaseMVC.MarketsController System.Web.Mvc.ActionResult News(Int32) on输入 TradeChaseMVC.MarketsController
所以,我想如果我明确地创建了没有可选 id 参数的路由,如下所示:
routes.MapRoute( _
"Default2", _
"{controller}/{action}/{id}",
New With {.controller = "Home", .action = "Index"},
New With {.action = "^[a-zA-Z_]+$", .id = "\d{1,8}|"}
)
routes.MapRoute( _
"Default", _
"{controller}/{action}",
New With {.controller = "Home", .action = "Index"},
New With {.action = "^[a-zA-Z_]+$"}
)
它会起作用,但不会出现同样的错误。
现在我知道简单的解决方案是调用我的方法不同的东西,但我不想这样做。
我也在考虑创建一个属性来为 ID 方法添加前缀,以检查 ID 是否存在,如果它不允许该方法,但我也无法让它工作。
任何帮助,将不胜感激。卡尔