提问人:Buck Hicks 提问时间:10/11/2023 更新时间:10/12/2023 访问量:33
当我有超过 1 个参数时,我在使用远程验证时遇到了问题
I am having an issue with using Remote Validation when I have more than 1 parameter
问:
尝试在我的应用程序中发送多个带有远程验证的参数时,我遇到了问题。例如,如果我的模型具有这三个属性: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);
}
}
答:
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" />
评论