0

我正在尝试验证属于 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 参数。我可以访问的一种方法是:

请求.查询字符串.值

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

并解析它。但我认为应该有更简单的东西可用。

4

1 回答 1

0

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

于 2019-07-22T03:17:26.603 回答