动态需要多个字段

时间:2017-02-13 15:35:21

标签: 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 required

如何根据客户端国家/地区选择器上选择的内容动态设置DevExpress控件的IsRequired设置?

2 个答案:

答案 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)
{
    //...
}