Asp.net mvc 动态地需要多个字段
我遇到这样一种情况,客户希望根据表单中的某些选择动态更改字段需求。更具体地说,我有以下字段: 国家(下拉列表)、州(下拉列表)、地址、城市、邮政编码 他们想要的是以下逻辑:Asp.net mvc 动态地需要多个字段,asp.net-mvc,devexpress,Asp.net Mvc,Devexpress,我遇到这样一种情况,客户希望根据表单中的某些选择动态更改字段需求。更具体地说,我有以下字段: 国家(下拉列表)、州(下拉列表)、地址、城市、邮政编码 他们想要的是以下逻辑: 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 requi
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
如何根据客户端国家/地区选择器上选择的内容动态设置DevXpress控件的IsRequired设置?我无法与
DevXpress
端通话,但一般来说,您必须放弃内置验证而改为进行自定义验证。例如,在您的操作中,您只需要执行以下操作:
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
属性可能会更好。您可以通过简单的搜索找到大量这样的示例,因此我将留给读者作为练习 对可选参数使用相同的方法
public void Method(address, city, state = null, zip = null)
{
//...
}
为那些DoPDONS PLS发布HTML标记。考虑代码< > [要求DIF ] <代码>属性或类似的条件验证属性应用到<代码>状态< /代码>和<代码> ZIPCOD/<代码>属性,从而获得客户端和服务器端验证。