我有两个操作方法:
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击中第二个方法