Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 动态地需要多个字段_Asp.net Mvc_Devexpress - Fatal编程技术网

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/<代码>属性,从而获得客户端和服务器端验证。