我有两种方法
[HttpGet]
public ActionResult Edit(int? id)
{
// do stuff
return View();
}
[HttpPost]
public ActionResult Edit(Object object)
{
//do more stuff
return View();
}
我正在尝试测试此方法,例如我想将null
传递给控制器,我会出现歧义错误。
var controller = new Controller();
controller.Edit(null); // ambiguity error
如何区分我想调用GET或POST方法?
答案 0 :(得分:3)
您还可以使用参数化调用。
[HttpGet]
public ActionResult Edit(int? id)
{
return View();
}
[HttpPost]
public ActionResult Edit(Object myObject)
{
return View();
}
var controller = new Controller();
controller.Edit(myObject: null);
controller.Edit(id: null);
答案 1 :(得分:1)
C#: Passing null to overloaded method - which method is called?
对此有一个很好的解释基于此,我认为应该将其投射
controler.Edit((int?) null); // for int
controler.Edit((object) null); // for object
答案 2 :(得分:1)
如果您显式声明了参数,那么编译器在传递null
值时将能够更具体地确定类型:
var controller = new Controller();
int? argInt = null;
var getResult = controler.Edit(argInt);
object argObj = null;
var postResult = controller.Edit(argObj);