Asp.net mvc 在测试的运行时未找到重载的操作方法

Asp.net mvc 在测试的运行时未找到重载的操作方法,asp.net-mvc,asp.net-mvc-4,c#-4.0,visual-studio-2012,Asp.net Mvc,Asp.net Mvc 4,C# 4.0,Visual Studio 2012,我有两种行动方法: public ActionResult Edit(int id) { } public ActionResult Edit(Modelname model, string[] strParam) { } 我正在从单元测试调用Edit(Modelname,string[]) var actionResult = controller.Edit(model, strParam); 代码在运行时编译,但当我调试测试方法时,它会给我一个找不到的方法“MissingM

我有两种行动方法:

 public ActionResult Edit(int id)
 { 
 }
 public ActionResult Edit(Modelname model, string[] strParam)
 {
 }
我正在从单元测试调用Edit(Modelname,string[])

var actionResult = controller.Edit(model, strParam);

代码在运行时编译,但当我调试测试方法时,它会给我一个找不到的方法“MissingMethodException”。我试着对Edit(intid)方法进行注释,然后进行调试,仍然是一样的。其他测试运行正常,欢迎任何帮助。

您的控制器中的操作方法不明确。虽然ASP.NET MVC可以很好地编译,但它无法决定在运行时使用哪种方法,因此会引发异常。您需要确保它们响应不同类型的HTTP请求,或者重命名其中一个请求

我不能确定您提供的信息是否正确,但如果第二种方法正在处理POST请求,则使用HttpPost筛选器将解决此问题:

public ActionResult Edit(int id)
{ 
}

[HttpPost]
public ActionResult Edit(Modelname model, string[] strParam)
{
}
如果不是这样,重命名是另一种解决方案。如果您有充分的理由不这样做,ASP.NET MVC将提供ActionName筛选器来覆盖ASP.NET MVC管道的方法名称:

public ActionResult Edit(int id)
{ 
}

[ActionName("EditModel")]
public ActionResult Edit(Modelname model, string[] strParam)
{
}

这将使hit成为第二个方法。

我将[HttpGet]和[HttpPost]参数添加到两个方法中,仍然是相同的错误。。我无法更改actionname,因为所有项目都遵循相同的标准。为什么在运行时会出现问题?我不明白,这两个方法都有不同的参数,我正在调用该方法correctly@blackPearl一个应该有HttpGet,另一个应该只有HttpPost。ASP.NET MVC使用方法名称来定位操作方法。当您有两个同名的方法时,它无法决定使用哪一个。