StringLength使用ASP.NET Model Binder在字典中的项值的属性

时间:2015-05-26 19:14:52

标签: asp.net data-annotations model-binding

我有一个看起来像这样的视图模型:

   public class DeviceConfigViewModel
    {
    [StringLength(20,ErrorMessage = "Max length of 20 characters",MinimumLength = 3)]
    [DisplayName("Device Name")]
    public String DeviceName { get; set; }

    [DisplayName("Zone Names")]
    public Dictionary<string, string> ZoneNames { get; set; }
    }

如何将相同的属性([StringLength(20,ErrorMessage = "Max length of 20 characters",MinimumLength = 3)])应用于词典/列表中的每个项目/元素?

所以我想将字典中每个项目的Value限制为最少3个字符长,最多20个字符。

1 个答案:

答案 0 :(得分:0)

将字典替换为自定义模型列表,并将验证属性应用于这些模型。

public class ViewModel
{
    public List<Pair> ZoneNames { get; set; }

    public struct Pair
    {
        [StringLength(20)]
        public string Key { get; set; }

        [StringLength(20)]
        public string Value { get; set; }
    }
}

如果需要,您可以将其转换回字典。

var zoneNames = viewModel.ZoneNames.ToDictionary(p => p.Key, p => p.Value);