Сопоставить запрос GET с действием

Я пытаюсь проверить количество выполнения (и другие поля, как только это сработает), которое принадлежит серверной части BeginCollectionItems. Запрос отправляется, но параметр progressQty не считывается действием.

Это действие, которое я пытаюсь сопоставить:

    [AllowAnonymous]
    [AcceptVerbs("Get", "Post")]
    public IActionResult CheckValidProgressQty(int progressQty)
    {

        int a =progressQty;
        var result = false;

        if (a > 0)
            result = true;

        return Json(result);
    }

Это запрос:

:method: GET :path: /Components/CheckValidProgressQty?ProgressItems%5B16bad1f2-155c-4a29-844c-34e88da80b7c%5D.ProgressQty=-300

Это параметры строки запроса:

ProgressItems[16bad1f2-155c-4a29-844c-34e88da80b7c].ProgressQty: -300

Вот удаленная проверка в классе модели представления:

[Удаленный (действие: «CheckValidProgressQty», контроллер: «Компоненты», HttpMethod = «GET», ErrorMessage = «ПЛОХОЕ КОЛ-ВО!»)] public int ProgressQty { get; набор; }

Прямо сейчас он переходит в метод CheckValidProgressQty, но я просто не могу получить доступ к параметру progressQty. Один из способов, которым я могу получить доступ, это:

Запрос.QueryString.Value

?ProgressItems%5B16bad1f2-155c-4a29-844c-34e88da80b7c%5D.ProgressQty=-8

и разобрать его. Но я думаю, что должно быть что-то более простое.


person Red invisible    schedule 21.07.2019    source источник
comment
Не могли бы вы поделиться своим кодом представления и моделью представления? Пытались ли вы принять данные, используя объект с параметрами [FromQuery]?   -  person Ryan    schedule 22.07.2019


Ответы (1)


ProgressItems[16bad1f2-155c-4a29-844c-34e88da80b7c].ProgressQty: -300

Это публикуемые данные формы, когда вы используете метод POST, а не метод GET.

Вы не можете получить строку запроса для параметров действия, используя ?ProgressItems%5B16bad1f2-155c-4a29-844c-34e88da80b7c%5D.ProgressQty=-300, так как они не совпадают.

Обратитесь к моей демонстрации ниже, в которой показано, как передать строку запроса в действие, предположим, что у меня есть модели:

public class TestUser
{
    [Key]
    public int Id { set; get; }
    public string Name { get; set; }
    public IList<UserInterest> Interests
    {
        get; set;
    }
}

public class UserInterest
{
    [Key]
    public int Id { set; get; }
    [Required]
    public string InterestText { set; get; }
    public int Option { set; get; }
}

Вам нужно использовать такой объект, как

public ActionResult UserTest(TestUser model)

И строка запроса ?Interests[0].InterestText=hello

person Ryan    schedule 22.07.2019