2013-01-15 4 views
0

필드에 값을 입력했는지 여부를 확인하는 컨트롤러 작업이 있습니다. 여기에 내가 어떻게하는지 :초기화 된 배열이 null인지 확인하십시오.

[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을 확인하는 기능이 작동하지 않습니다. 모두 내가 배열을 통해 반복 할 수 있고 그것에 항목이 있는지 확인하십시오.

배열에 항목이 있거나 값이 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))) 
관련 문제