路由:以下 *** 作方法之间当前的 *** 作要求[…]不明确

路由:以下 *** 作方法之间当前的 *** 作要求[…]不明确,第1张

路由:以下 *** 作方法之间当前的 *** 作要求[…]不明确

在一个控制器上,您最多只能有两个具有相同名称的 *** 作方法,而要做到这一点,必须为1

[HttpPost]
,另一个必须为
[HttpGet]

由于两种方法都是GET,因此您应该重命名其中一种 *** 作方法或将其移至其他控制器。

尽管您的2个浏览方法是有效的C#重载,但MVC *** 作方法选择器无法确定要调用的方法。它将尝试将路由与该方法匹配(反之亦然),并且该算法不是强类型的。

您可以使用指向不同 *** 作方法的自定义路由来完成所需的 *** 作:

…在Global.asax中

routes.MapRoute( // this route must be declared first, before the one below it     "StartBrowse",     "Gallery/Browse/Start/Here",     new     {         controller = "Gallery",         action = "StartBrowse",     });routes.MapRoute(     "ActualBrowse",     "Gallery/Browse/{searchterm}",     new     {         controller = "Gallery",         action = "Browse",         searchterm = UrlParameter.Optional     });

…以及在控制器中…

public ActionResult Browse(string id){    var summaries =     return View(summaries);}public ActionResult StartBrowse(){    var summaries =     return View(summaries);}

您还可以通过将属性应用于一个属性来区分它,从而在控制器中使名称相同的动作方法保持相同

[ActionName]
。使用与上述相同的Global.asax,您的控制器将如下所示:

public ActionResult Browse(string id){    var summaries =     return View(summaries);}[ActionName("StartBrowse")]public ActionResult Browse(){    var summaries =     return View(summaries);}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5559766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存