控制器中的MVC5模糊动作方法

本文关键字:方法 模糊 MVC5 控制器 | 更新日期: 2023-09-27 18:14:31

我已经编写了一个c# MVC5互联网应用程序,并有一个关于两个ActionResult方法在同一个控制器的问题。

我有两个索引ActionResult方法如下:

public async Task<ActionResult> Index()
public async Task<ActionResult> Index(int? mapCompanyId)

我想浏览到索引()方法或索引(int?mapCompanyId)方法,具体取决于是否为mapCompanyId指定了一个值。

当前,我得到这个错误:

The current request for action 'Index' on controller type 'MapLocationController' is ambiguous between the following action methods:
System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult] Index() on type CanFindLocation.Controllers.MapLocationController
System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult] Index(System.Nullable`1[System.Int32]) on type CanFindLocation.Controllers.MapLocationController

我可以重写我的代码,使只有一个索引ActionResult,但宁愿有两个,如果可能的话。

是否可能有两个具有相同名称的ActionResults,并且取决于是否指定了一个值,是否执行相关的ActionResult。如果是这样,它是否容易执行,还是不值得花时间?

控制器中的MVC5模糊动作方法

这是不可能的,因为您试图为每个方法做一个GET请求。ASP。. NET MVC动作选择器不知道选择哪个方法。

如果它是有意义的,你可以使用HttpGetHttpPost属性来区分每种类型的HTTP请求的方法。这听起来不像是对你有意义。

您可以为动作重载分配不同的HTTP方法,如下所示:

[HttpGet]
public async Task<ActionResult> Index()
[HttpPost]
public async Task<ActionResult> Index(int? mapCompanyId)

MVC运行时将能够根据请求HTTP方法选择适当的操作。

您可以使用自定义操作方法选择器http://www.codeproject.com/Articles/291433/Custom-Action-Method-Selector-in-MVC

https://agileshoptalk.wordpress.com/2012/02/03/custom-action-method-overloading-in-mvc3/