AmbiguousMatchException, брошенный для разных тел - PullRequest
0 голосов
/ 26 июня 2019

У меня есть две формы, которые публикуют на один и тот же URL: http://localhost/foo/bar

<form method="POST" action="http://localhost/foo/bar">
    <input name="someId" value="123" />
</form>

<form method="POST" action="http://localhost/foo/bar">
    <input name="someData" value="345435435" />
</form>

И у меня есть следующие действия в FooController:

[HttpPost("bar")]
public IActionResult A([FromForm] string someId)
{
    ...
}

[HttpPost("bar")]
public IActionResult B([FromForm] string someData)
{
    ...
}

Но я получаю AmbiguousMatchException. Возможно ли то, что я пытаюсь сделать?

1 Ответ

1 голос
/ 26 июня 2019

Я решил это с атрибутом!

public class ParameterConstraint : ActionMethodSelectorAttribute
{
    private readonly string _name;

    public ParameterConstraint(string name)
    {
        _name = name;
    }

    public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
    {
        return !string.IsNullOrEmpty(routeContext.HttpContext.Request.Form[_name]);
    }
}
[HttpPost("bar")]
[ParameterConstraint("someId")]
public IActionResult A([FromForm] string someId)
{
    ...
}

[HttpPost("bar")]
[ParameterConstraint("someData")]
public IActionResult B([FromForm] string someData)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...