当我有超过 1 个参数时,我在使用远程验证时遇到了问题

I am having an issue with using Remote Validation when I have more than 1 parameter

提问人:Buck Hicks 提问时间:10/11/2023 更新时间:10/12/2023 访问量:33

问:

尝试在我的应用程序中发送多个带有远程验证的参数时,我遇到了问题。例如,如果我的模型具有这三个属性:ItemNumber、FromLocation 和 Quantity。我想在检查 Quantity 时传递 ItemNumber 和 FromLocation。

public class ItemModel
{
    public string ItemNumber { get; set; } = string.Empty;
    public string FromLocation { get; set; } = string.Empty;
       
    [Required, Range(0.001, 9999999999), 
        DisplayName("Qty"), 
        PageRemote(ErrorMessage = "Invalid Quantity", 
        HttpMethod = "post", 
        PageHandler = "CheckQuantity", 
        AdditionalFields = nameof(ItemNumber))]
    public decimal Quantity { get; set; }   
)

我在网上看到过一两个使用远程属性中的附加字段添加的示例(如上所述),其中 AdditionalFields = nameof(ItemNumber)。但是,在我的应用程序中,我的附加字段属性是这样的(如下所示)。

<td>
    <label asp-for="Item.Quantity" class="control-label"></label>
</td>
<td>
    <input data-val-remote-additionalfields="__RequestVerificationToken" asp-for="Item.Quantity" class="form-control" />
</td>
<td>
    <span asp-validation-for="Item.Quantity" class="text-danger"></span>
</td>

我是否可以使用“数量”查找添加 ItemNumber 和 Location?

为了说明这一点,当 Quantity 文本框离开时,Quantity 将传递给下面的 JsonResult,但 ItemModel 的其余部分为 null 或为空。

public async Task<JsonResult> OnPostCheckQuantity(ItemModel item)
{
    ItemCheck Quantity = await ItemCheck.CheckQuantityAsync(
        item.ItemNumber, 
        item.FromLocation);

    if (Quantity.Qauntity < item.Quantity)
    {
        return new JsonResult("Quantity is greater than available for that location.");
    }
    else
    {
        return new JsonResult(true);
    }
}
C# ASP.NET-Core 剃刀页 远程验证

评论

0赞 Buck Hicks 10/11/2023
我想通了,但不想删除这个问题,以防万一它对其他人有帮助。关键是将这两个属性添加到窗体的__RequestVerificationToken中。_RequestVerificationToken,Item.ItemNumber,Item.FromLocation“ asp-for=”Item.Quantity“ class=”form-control”
1赞 Jalpa Panchal 10/11/2023
如果问题得到解决,您可以发布解决方案并将其标记为答案,这将在将来帮助其他用户

答:

0赞 Buck Hicks 10/12/2023 #1

我能够弄清楚这一点。关键是将属性添加到 RequestVerificationToken 之后的输入标记中(如下所示)。

<input 
    data-val-remote-additionalfields="__RequestVerificationToken,
    Item.ItemNumber,Item.FromLocation" 
    asp-for="Item.Quantity" class="form-control" />