我正在使用剃刀页。我有两个字段,在一个模型中是不需要的:
` public class OrderModel : EntityModel, IValidatableObject
{
public string UserId { get; set; }
public int PortfolioId { get; set; }
public int StockId { get; set; }
public int StockHoldingId { get; set; }
public string StockSymbol { get; set; }
[Required]
[DisplayName("Shares Traded")]
public int QuantityTraded { get; set; }`
这两个字段是UserId和StockSymbol。我有一个表单的以下部分,UserId和StockSymbol不存在,因此为null或空,这是我有意做的:
` <div>
Quantity: <input type="number" min="0" asp-for="@Model.Order.QuantityTraded" />
<input type="hidden" asp-for="@Model.Stock.Id" />
<input type="hidden" asp-for="@Model.Stock.Symbol" />
<input type="hidden" asp-for="@Model.Stock.Price" />
<input type="hidden" asp-for="@Model.Stock.StockName" />
<input type="hidden" asp-for="@Model.Stock.Description" />
<input class="btn-primary" type="submit" value="Buy" asp-page-handler="Buy" />
<input class="btn-primary" type="submit" value="Sell" asp-page-handler="Sell" />
</div>`
当我提交表单时,我的ModelState无效,如下所示:
它显示“UserId字段是必需的”和“StockSymbol字段是必需的”。当[Required]属性显然不存在时,还有什么可能导致这种需求?
根据要求,下面是Validate方法:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (QuantityTraded < 1)
{
yield return new ValidationResult(
$"Quantity must be greater than 0.",
new[] { nameof(QuantityTraded) });
}
}
1条答案
按热度按时间ajsxfq5m1#
这样做。也许下面的事情会对你有帮助。它适用于更新的。NET核心5〉版本。
或删除.csproj文件中的以下标记