我有一个产品数据库,人们可以在其中添加产品规格。目前看起来像这样: Application Screenshot
所有这些不同的规范都需要自定义验证,因此用户只能为特定规格输入特定值。目前,它在数据库中定义了哪个规范是哪种数据类型。每个规范都有一个数据类型的外键。我想我需要在提交表单时检查当前选择的属性,并对值字段进行某种动态验证。但是我找不到任何类似的情况已经发布在这里。
我发布了我当前的代码,这更像是我认为应该如何工作的大纲。
ValidationAttribute:
public class DropdownBasedValueValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
AddSpecificationViewModel viewModelUsed = (AddSpecificationViewModel)validationContext.ObjectInstance;
switch(viewModelUsed.datatypeSelected)
{
case "Int32":
return checkInt32((int)value);
case "Boolean":
return checkBool((bool)value);
case "String":
return checkString(value.ToString());
}
return new ValidationResult("Entered value is incorrect");
}
}
视图模型:
[Display(Name = "Value")]
[Required]
[DropdownBasedValueValidation()]
public string Value { get; set; }
查看:
@using (Html.BeginForm("AddSpecification", "Products", FormMethod.Post))
{
@Html.HiddenFor(m => m.productIdCode)
<div class="col-md-4">
<div class="form-group">
@Html.LabelFor(model => model.labelDropwdownValue)
@Html.DropDownList("LabelId", null, "All", new { @class = "form-control" })
</div>
</div>
<div class="col-md-8">
<div class="form-group">
@Html.ValidationMessageFor(m => m.Value)
@Html.LabelFor(m => m.Value)
@Html.TextBoxFor(m => m.Value, null, new { @class = "form-control" })
</div>
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-block">Add Specification</button>
</div>
}
我对MVC很新,所以我希望你们能在这里帮助我:)