我有一个班级......
public class TestClass
{
[DataMember(IsRequired = true)]
[Required]
public string Test { get; set; }
[DataMember(IsRequired = true)]
[Required]
public string Test2 { get; set; }
}
我基本上是试图通过我的控制器动作实现这一点..
public ActionResult Index(string value1, string value2, TestClass testClass)
{
if (testClass != null && !ModelState.IsValid)
{
//return validation errors
}
//continue processing
然而,由于MVC模型绑定,TestClass
不是null
,因此它实例化了包含null
和Test
字符串的Test2
属性,转动强制它检查ModelState.IsValid
,这当然是假的。
有人可以指出我出错的地方或提出更好的选择吗?
EDIT。
我正在检查null,因为要求是必须将value1
和value2
传递到系统,然后TestClass
包含有关所提供内容的额外信息。不需要额外的信息,但是需要提供它才需要进行验证。
答案 0 :(得分:0)
我认为唯一的解决方案是使用自定义模型绑定(实现IModelBinder
)。
这使您可以完全访问对象的反序列化。
请参阅this article上的MSDN和action filter中的图7:
或许您可以使用{{3}}介入(参见处理验证错误一节)。