是什么决定了集合属性项的 ModelStateDictionary 中的键

发布于 2024-10-24 16:12:06 字数 1274 浏览 2 评论 0原文

如果这是我的视图模型:

 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< /s> (请参阅下面的更新)
  2. ViewModel.ComplexProperty (请参阅下面的更新)
  3. ViewModel.ComplexProperty.NestedSimpleProperty < em>(请参阅下面的更新)
  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 之外的所有内容

If this is my view model:

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

Then what would be the default error message keys assigned to a ModelStateDictionary for:

  1. ViewModel.SimpleProperty (see update below)
  2. ViewModel.ComplexProperty (see update below)
  3. ViewModel.ComplexProperty.NestedSimpleProperty (see update below)
  4. ViewModel.ComplexPropertyArray (see update below)
  5. ViewModel.ComplexPropertyArray[0]
  6. ViewModel.ComplexPropertyArray[0].NestedSimpleProperty

Update I found this in reflector:

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

So, I think that covers everything except for #5 and #6

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耀眼的星火 2024-10-31 16:12:06

如果您将 NestedSimpleProperty 设置为必需:

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

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

If you make the NestedSimpleProperty required:

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

and then you have a form in which you have multiple textboxes for this property corresponding to each item in the ComplexPropertyArray collection then the key that will be used for error messages will be ComplexPropertyArray[i].NestedSimpleProperty where i represents the index of the element in the array which contains an empty value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文