Метод действия перегрузки в Asp.net 8 MVC на основе типа тела httpC#

Место общения программистов C#
Ответить
Anonymous
 Метод действия перегрузки в Asp.net 8 MVC на основе типа тела http

Сообщение Anonymous »

Я хочу написать API с одним URL-адресом и маршрутизировать его на основе типа тела, как показано ниже

Код: Выделить всё

        [HttpPost]
[Route("{input: OverloadModelA}")]
public IActionResult OverloadInsert([FromBody]OverloadModelA input)
{
return View();
}

[HttpPost]
[Route("{input: OverloadModelB}")]
public IActionResult OverloadInsert([FromBody]OverloadModelB input)
{
return View();
}
Мои модели, как показано ниже

Код: Выделить всё

    public class OverloadModelA
{
public string AName {  get; set; }
}

public class OverloadModelB
{
public string BName { get; set; }
}
Как я знаю из https://stackoverflow.com/a/14358642/1539100, мне нужен маршрут, основанный на типе, например "{id:int}" (метод действия перегрузки).< /p>
но «{input: OverloadModelA}» не работает и скажем

Код: Выделить всё

InvalidOperationException: The constraint reference ' OverloadModelA' could not be resolved to a type. Register the constraint type with 'Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap'.
Как перегрузить метод действия на основе пользовательского типа?
Я использую .NET 8< /em>

Я нашел решение, основанное на https://stackoverflow.com/a/1045616/1539100, которое использует ActionMethodSelectorAttribute, но я думаю, что это очень сложное и неэффективное решение, поэтому я надеюсь, что кто-нибудь предложит более лучшее (чистое и хорошее решение) для моего вопроса.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -http-body
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»