我有一个看起来像这样的Viewmodel:
public class Viewmodel
{
public int Type {get;set} // 0 if typeA, 1 if typeB
[Required]
public string AProperty1 {get;set}
[Required]
public string AProperty1 {get;set}
...
[Required]
public string BProperty1 {get;set}
[Required]
public string BProperty1 {get;set}
}
有两种形式可以获得此视图模型,而在FormA用户输入中,AProperty1,AProperty2等和BProperty-s返回为null。 与FormB相同。 表单类型(FormA或FormB)分配给ViewModel.type字段。
所以问题是在我的控制器中我检查了ModelState.IsValid属性,它在两个方面都是假的,因为一半的字段总是为空。
一种可能的解决方案是以某种方式覆盖ModelView中的ModelState.IsValid属性,以便我可以将类型传递给它。但据我所知,没有办法。
还有其他解决方案吗? (它最好能够与客户端验证一起使用)
答案 0 :(得分:2)
如果确实只需要一个ViewModel用于两个不同的视图,“部分验证”可能是您的解决方案。看看这个博客:
http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/