0

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

[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");
        }

此处数组“字段”已初始化,因此其长度永远不会为 0。此外,检查 null 不起作用。我所能做的就是遍历数组并检查它是否有任何项目。

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

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

4

4 回答 4

4

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

于 2013-01-15T18:52:31.857 回答
2

使用列表。

    [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");
    }

更新

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

于 2013-01-15T18:54:41.907 回答
2

我相信你可以做到:

if (fields.Any(f => !string.IsNullOrEmpty(f)))
于 2013-01-15T18:57:48.560 回答
1

您也可以为数组执行此操作。只需调用:

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

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

于 2013-01-15T18:55:35.330 回答