检查初始化的数组是否为空

本文关键字:是否 数组 初始化 检查 | 更新日期: 2023-09-27 17:53:49

我有一个控制器动作,我在其中验证是否在字段中输入了任何值。我是这样做的:

[HttpPost]
        public ActionResult ValidateFields(string Desc, string Status, string Name )
        {
            string[] fields = new string[3];
            if (string.IsNullOrEmpty(Desc))
                fields[0] = "#Desc";
            if (string.IsNullOrEmpty(Status))
                fields[1] = "#Status";
            if (string.IsNullOrEmpty(Name))
                fields[2] = "#Name ";
// Check if the initialized array "fields" has any items in it.
            if (fields != null)
            { return content("Please enter valid values for " + fields); }
            return content("Validation Successful");
        }

这里数组"fields"是初始化的,因此它的长度永远不会为0。此外,检查null也不起作用。我所能做的就是循环遍历数组并检查其中是否有元素。

是否有更好的方法来检查数组中是否有任何项目或只是空值?

另外,如果有比我现在做的更好的验证字段的方法,请让我知道。我希望它是可维护的,如果明天我添加新字段,我希望花尽可能少的时间来验证它们。

检查初始化的数组是否为空

为什么不用List<string>呢?这将允许您添加每个字段,然后您可以检查列表的长度。

使用列表

    [HttpPost]
    public ActionResult ValidateFields(string Desc, string Status, string Name )
    {
        List<string> fields = new List<string>();
        if (string.IsNullOrEmpty(Desc))
            fields.Add("#Desc");
        if (string.IsNullOrEmpty(Status))
            fields.Add("#Status");
        if (string.IsNullOrEmpty(Name))
            fields.Add("#Name");
        // Check if the list "fields" has any items in it.
        if (fields.Any()) {
             return content("Please enter valid values for " + string.Join(", ", fields)); 
        }
        return content("Validation Successful");
    }

更新

另一种可能更好、更易于维护的验证方法是创建一个模型类,并添加验证属性。看到这里。

我相信你能做到:

if (fields.Any(f => !string.IsNullOrEmpty(f)))

对于数组也可以这样做。调用:

fields.Any(i => i != null)

您还可以通过使用内置的ASP来改进验证。. NET MVC验证机制