【发布时间】:2012-05-03 16:13:17
【问题描述】:
我有以下 ViewModel(为了便于阅读,只显示了一些属性)
public class Contract{
public string Name {get; set;}
public ContractTerm PrpTerm { get; set; }
}
PRP Term 模型是这样的
public class PrpTerm{
public int Id {get; set;}
public string Name {get; set;}
}
对于我的模型验证,我使用 XML 文件来注入注释。我已经根据需要设置了Name 属性,并且我让ContractTerm 没有指定任何验证(它是列表中的可选字段)。我的观点是有一个名称的文本框和一个合同条款的选择列表。
当我尝试保存时,我将 ModelState.IsValid 属性设置为 false,表示需要 PRPTerm.Id 值。我知道这是因为我们无法将 null 值分配给 int。
有人知道避免这种情况被验证的方法吗?
我尝试使用 Bind(Exclude 注释,但这会从数据提交中删除该字段,并且这不允许我获取用户选择的值(如果发生这种情况)。我无法将 id 设置为可为空在 PrpClass 上。另一个选项是在 ViewModel 上设置 PrpTerm Id,但我需要用正当理由证明该更改是合理的。
有什么想法吗?
【问题讨论】:
标签: asp.net-mvc-3 validation data-annotations