在 ASP 中具有相同名称的控制器中测试 GET/POST 方法.MVC



我有两个方法

[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);

最新更新