2

如果这是我的视图模型:

 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;}
 }

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

  1. ViewModel.SimpleProperty (请参阅下面的更新)
  2. ViewModel.ComplexProperty (见下面的更新)
  3. ViewModel.ComplexProperty.NestedSimpleProperty (请参阅下面的更新)
  4. ViewModel.ComplexPropertyArray (见下面的更新)
  5. ViewModel.ComplexPropertyArray[0]
  6. ViewModel.ComplexPropertyArray[0].NestedSimpleProperty

更新 我在反射器中发现了这个:

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之外的所有内容

4

1 回答 1

2

如果您做出NestedSimpleProperty要求:

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

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

于 2011-03-21T14:27:29.617 回答