2013-01-15 40 views
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不起作用。我所能做的就是循環訪問數組,並檢查它是否有任何項目。

有沒有更好的方法來檢查一個數組是否有任何項目或只是空值?

此外,如果有更好的方法來驗證字段比我做的更好,請讓我知道。 我希望它可以維護,如果明天我添加新的領域,我想花很少的時間,我可以驗證它們。

回答

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

UPDATE

另外一種也許更好,更易於維護,方法來驗證是創建一個模型類,並添加驗證特性。見here

4

爲什麼不用List<string>代替?這將允許您添加每個字段,然後您可以檢查列表的長度。

1

你也可以爲數組做。只需調用:

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

您還可以使用內置的ASP.NET MVC的驗證機制,提高您的驗證。

2

我相信你能做到:

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