ASP.NET MVC基于下拉菜单的自定义数据验证

时间:2017-11-08 12:04:31

标签: c# asp.net-mvc validation

我有一个产品数据库,人们可以在其中添加产品规格。目前看起来像这样: 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很新,所以我希望你们能在这里帮助我:)

0 个答案:

没有答案