作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的 View 模型:
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}
}
有 2 个表单可以获取此 View 模型,在 FormA 中用户输入 AProperty1、AProperty2 等,BProperty-s 返回 null。与FormB 相同。表单类型(FormA 或 FormB)被分配给 ViewModel.type 字段。
所以问题是,在我的 Controller 中,我检查 ModelState.IsValid 属性,它在两种情况下都为 false,因为一半字段始终为空。
一种可能的解决方案是以某种方式覆盖 ModelView 中的 ModelState.IsValid 属性,以便我可以将类型传递给它。但据我所知,没有办法。
还有其他解决办法吗? (它最好应该能够与客户端验证一起使用)
最佳答案
如果确实需要为两个不同的 View 仅使用一个 ViewModel,那么“部分验证”可能是您的解决方案。查看此博客:
http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/
关于asp.net-mvc-2 - 如何仅使用 DataAnnotations 验证 Viewmodel 中的部分字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4343940/
我是一名优秀的程序员,十分优秀!