我的情况是客户希望字段要求根据表单中的某些选择动态更改。更具体地说,我有以下字段:
国家/地区(下拉列表),州(下拉列表),地址,城市,邮政编码
他们想要的是以下逻辑:
if US selected as country
state, address, city, zip all required
else if any other country selected
address, city required but state and zip code not required
如何根据客户端国家/地区选择器上选择的内容动态设置DevExpress控件的IsRequired设置?
答案 0 :(得分:0)
我无法与DevExpress
方面交谈,但一般来说,您必须放弃内置验证并进行自定义验证。例如,在您的操作中,您只需要执行以下操作:
if (model.Country == "US")
{
if (String.IsNullOrWhiteSpace(model.State))
{
ModelState.AddModelError("State", "State is required");
}
if (String.IsNullOrWhiteSpace(model.ZipCode))
{
ModelState.AddModelError("ZipCode", "Zip Code is required");
}
}
if (ModelState.IsValid)
{
...
然后,您根本不会将[Required]
应用于视图模型上的这些属性,而是依赖此代码来验证它们。如果该国家是“美国”,那么他们将被要求,否则不是。
但是,老实说,这有点代码味道,而且它不包括客户端验证等内容。使用自定义RequiredIf
属性可能会更好。你可以通过简单的搜索找到大量的例子,所以我将把它作为读者的练习。
答案 1 :(得分:-1)
使用与可选参数
相同的方法public void Method(address, city, state = null, zip = null)
{
//...
}