我有两个方法
[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 方法?
您还可以使用参数化调用。
[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);
在 C# 中对此有一个非常好的解释:将 null 传递给重载方法 - 调用哪个方法?
基于此,我认为铸造它应该有效
controler.Edit((int?) null); // for int
controler.Edit((object) null); // for object
如果显式声明参数,则编译器将能够在传递null
值时更具体地确定类型:
var controller = new Controller();
int? argInt = null;
var getResult = controler.Edit(argInt);
object argObj = null;
var postResult = controller.Edit(argObj);