MVC4:当将null传递给可空字段时,ModelState无效

3

我将创建一个带有子菜单的菜单结构。顶部菜单项的ParentID应为NULL。

我的模型:

    public Menu()
    {
        this.active = true;
        this.publishStart = DateTime.Now;
        this.seq = 1;
    }
    public string Name { get; set; }
    public string Name_Sub { get; set; }
    public string Url { get; set; }
    public int? Level { get; set; }
    public int? ParentID { get; set; }
    public string Icon { get; set; }
    public int? Status { get; set; }

    public virtual Menu Parent { get; set; }
    public virtual ICollection<Menu> ChildMenus { get; set; }

并且

   modelBuilder.Entity<Menu>().HasOptional(s => s.Parent)
   .WithMany(s => s.ChildMenus).HasForeignKey(s => s.ParentID);

通过JSon更新顶级菜单(ParentID=null)时,我的ModelState无效,因为ParentID=null。

我可以使用ParentID = 0来解决顶级问题,但我想知道为什么使用空值会失败,尽管我在模型中将其设置为可空。


1
你提供具体的错误信息会更有帮助... - JasCav
1
你有自定义的模型绑定器吗?默认的模型绑定器可以处理这种情况,所以我的第一猜测是你正在使用某种自定义的模型绑定器... - Marko
这是一个好问题,但在StackOverflow上,您确实需要及时待命并快速响应评论。 - Gert Arnold
尝试使用Nullable<int>代替int? - Gaui
1个回答

1
问题来自于返回值为"null"而不是空字符串""。 我正在使用jtable(jtable.org),并为ParentID创建了一个自定义显示字段,这导致了问题,因为我在顶级显示了ParentIDs(1,2,....44..)和"null"。 因此,应该返回""而不是"null"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接