在运行时从测试中找不到重载操作方法



我有两个操作方法:

 public ActionResult Edit(int id)
 { 
 }
 public ActionResult Edit(Modelname model, string[] strParam)
 {
 }

我从单元测试中调用Edit(Modelname,string[])。

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

代码在运行时编译,但是当我调试测试方法时,它给了我一个没有找到"MissingMethodException"的方法。我试着评论编辑(int id)方法,然后调试,仍然是同样的事情。其他测试运行良好,欢迎任何帮助。

控制器中的操作方法匹配不明确。虽然它可以很好地编译,但是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的方法名。. NET MVC管道:

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

这将使http://example.org/controller/EditModel击中第二个方法

最新更新