什么决定了ModelStateDictionary中Collection of Items属性的键

时间:2011-03-21 13:55:09

标签: asp.net-mvc asp.net-mvc-2 modelstate addmodelerror modelstatedictionary

如果这是我的观看模式:

 public class ViewModel{
      public string SimpleProperty{get;set;}
      public SubViewModel ComplexProperty{ get;set;}
      public SubViewModel[] ComplexPropertyArray{ get; set; }
 }

 public class SubViewModel{
      public string NestedSimpleProperty{get;set;}
 }

那么分配给ModelStateDictionary的默认错误消息键是什么:

  1. ViewModel.SimpleProperty (请参阅下面的更新)
  2. ViewModel.ComplexProperty (请参阅下面的更新)
  3. ViewModel.ComplexProperty.NestedSimpleProperty (请参阅下面的更新)
  4. ViewModel.ComplexPropertyArray (请参阅下面的更新)
  5. ViewModel.ComplexPropertyArray [0]
  6. ViewModel.ComplexPropertyArray [0] .NestedSimpleProperty
  7. 更新我在反射器中找到了这个:

    protected internal static string CreateSubPropertyName(string prefix, string propertyName)
    {
        if (string.IsNullOrEmpty(prefix))
        {
            return propertyName;
        }
        if (string.IsNullOrEmpty(propertyName))
        {
            return prefix;
        }
        return (prefix + "." + propertyName);
     }
    

    所以,我认为除了#5和#6

    之外,它涵盖了所有内容

1 个答案:

答案 0 :(得分:2)

如果您要求NestedSimpleProperty

public class SubViewModel
{
    [Required]
    public string NestedSimpleProperty{ get; set; }
}

然后你有一个表格,你有这个属性的多个文本框对应于ComplexPropertyArray集合中的每个项目,那么将用于错误消息的密钥将是ComplexPropertyArray[i].NestedSimpleProperty其中{{ 1}}表示数组中包含空值的元素的索引。