检查初始化的数组是否为空
本文关键字:是否 数组 初始化 检查 | 更新日期: 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验证机制