[英]ASP.NET Core MVC parameterized validation, conditional validation or validation of a property based on its parent class
我的表單有兩個模型屬性,Max和Min,它們負責表單中的任何Max或Min值,我驗證這些屬性以確保它們是小數並存在,並且還驗證了范圍
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Minimum { get; set; }
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Maximum { get; set; }
這是我針對范圍的自定義驗證器
public class MaxMinRangeAttribute : ValidationAttribute
{
private String ErrorMessage { get; set; }
public MaxMinRangeAttribute(String errormessage)
{
this.ErrorMessage = errormessage;
}
protected override ValidationResult IsValid(object value, ValidationContext context)
{
if (value != null)
{
double maxmin;
bool isDouble = Double.TryParse(value.ToString(), out maxmin);
if (isDouble && Convert.ToDouble(value.ToString()) > 100)
{
return new ValidationResult(ErrorMessage);
}
}
return ValidationResult.Success;
}
}
但是,我的“視圖/ cshtml”頁面中的“最大”和“最小”模型屬性代表了不同的父類,例如化學成分的百分比或毫米
(化學成分百分比)
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ChemicalComposition[20].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ChemicalComposition[20].Value.Minimum" class="alert-danger"></span>
</td>
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ChemicalComposition[21].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ChemicalComposition[21].Value.Minimum" class="alert-danger"></span>
</td>
毫米
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ProductDimensions[0].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ProductDimensions[0].Value.Minimum" class="alert-danger"></span>
</td>
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ProductDimensions[1].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ProductDimensions[1].Value.Minimum" class="alert-danger"></span>
</td>
百分比顯然不應大於100; 但是,毫米可以是
我的問題是如何根據父類,其他屬性或某些其他參數來不同地驗證相同的模型屬性?
如何驗證百分比不大於100的最大值/最小值,而忽略此最大值/最小值毫米的驗證?
非常感謝您的幫助
我們最終更新了模型(無法避免)。 我們已經為百分比創建了一個額外的屬性
public class MaxMin
{
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
public string Minimum { get; set; }
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
public string Maximum { get; set; }
}
public class MaxMinPercentage
{
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Minimum { get; set; }
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Maximum { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.