ASP.NET Core MVC 1.0 метод множественного столба в одном контроллере
Я могу сделать это, используя следующий код:
[HttpPost("SampleRoute1")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functionone.....
return Json("");
}
[HttpPost("SampleRoute2")]
public JsonResult Post([FromBody]SampleModel2 value)
{
.....Functiontwo.....
return Json("");
}
Но я не могу этого сделать:
[HttpPost("SampleRoute1")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functionone.....
return Json("");
}
[HttpPost("SampleRoute2")]
public JsonResult Post([FromBody]SampleModel1 value)
{
.....Functiontwo.....
return Json("");
}
Это дает ошибку "тип 'Controller1' уже определяет член под названием 'Post' с теми же типами параметров "
Так есть ли способ, которым я могу сделать два поста в одном контроллере с одним и тем же параметром, но с разным маршрутом?
Вот так:
Posting(SampleModel1) = > "Controller1SampleRoute1" = > Doing Function1
Posting (SampleModel1) => "Controller1SampleRoute2" = > Выполнение Функции Function2
2 ответа:
Да, вы можете сделать это. Проблема в том, что вы пытаетесь иметь два метода в классе, которые имеют одинаковое имя и параметры, и это невозможно. Вы должны изменить название ваших методов на что-то другое.
Обратите внимание, что имя действия и тип запроса Post уже указаны в атрибуте HttpPost, поэтому вам не нужно полагаться на имя метода.
[HttpPost("SampleRoute1")] public JsonResult Aaa([FromBody]SampleModel1 value) { .....Functionone..... return Json(""); } [HttpPost("SampleRoute2")] public JsonResult Bbb([FromBody]SampleModel1 value) { .....Functiontwo..... return Json(""); }
Вы получаете ошибку, потому что у вас есть 2 метода, которые идентичны. Как бы вы узнали, кого из них казнить? Вы основываете это на маршрутах, которые вы определили?
Если бы я дал вам 2 одинаковых красных яблока, чтобы съесть, нет никакой разницы между этими 2 яблоками, и я сказал бы вам съесть правильное яблоко, вы бы знали, какое из них правильное яблоко?Вам придется изменить имена методов, чтобы они были уникальными и идентифицируемыми.
[HttpPost("SampleRoute1")] public ActionResult Function1(SampleModel1 model) { return Json(""); } [HttpPost("SampleRoute2")] public ActionResult Function2(SampleModel1 model) { return Json(""); }
Таким образом, основываясь на выше произойдет следующее:
- Итак, теперь при отправке
SampleModel1
, используя маршрутController1\SampleRoute1
, будет выполняться метод действияFunction1
- Так что теперь при размещении
SampleModel2
, используя маршрутController1\SampleRoute2
, будет выполняться метод действияFunction2
.