Asp.net mvc 3 ASP.NETMVC不同的必填字段

Asp.net mvc 3 ASP.NETMVC不同的必填字段,asp.net-mvc-3,Asp.net Mvc 3,我有一个用于创建类似项目的表单。我将简化场景以进行演示 您可以创建许多“内容类型”中的一种。您可以选择添加“文件”、“文件夹”、“公告”等。我将使用/home/addcontent?contenttype=File来确定要在视图中显示的选项 每个内容项都有以下内容 名字 说明(可选) “文件”还包括: 列表项 文件路径 公告还包括: 优先权 显示主页FLG(可选) 我可以将所有这些添加到一个带有所有数据注释的viewmodel中,但modelstate.isvalid几乎永远不会为真,因为每个“

我有一个用于创建类似项目的表单。我将简化场景以进行演示

您可以创建许多“内容类型”中的一种。您可以选择添加“文件”、“文件夹”、“公告”等。我将使用/home/addcontent?contenttype=File来确定要在视图中显示的选项

每个内容项都有以下内容

  • 名字
  • 说明(可选)
  • “文件”还包括:

  • 列表项
  • 文件路径
  • 公告还包括:

  • 优先权
  • 显示主页FLG(可选)
  • 我可以将所有这些添加到一个带有所有数据注释的viewmodel中,但modelstate.isvalid几乎永远不会为真,因为每个“内容类型”都有唯一的属性


    是否有一些编程方法来添加或排除特定的数据批注,或者我是否应该为每种内容类型使用单独的viewmodel和controller

    我能想到的唯一方法就是使用

    同样是一个样本

    然后在控制器中,您将不使用ModelState.IsValid,而只使用业务逻辑层中的验证


    您还可以考虑使用JQuery.validation和您自己的脚本来检查字段

    不,没有编程方法。(据我所知)。将这些坏家伙分开,并/或使用多态技巧来促进代码重用。请查看此处以寻找可能的解决方案: