2014-01-07 53 views
0

我在這裏有一個疑問。在測試兩個if條件之後,它僅存儲第二個條件值。當條件爲真時如何存儲兩個條件值。在執行第2個if條件後,第1個if條件值超過騎行。如何將值存儲在列表中

我的模型如下所示。

public class TimesheetError 
{ 
    public string Status { get; set; } 
    public string Messsage { get; set; } 
    public string ListErrors { get; set; } 
    public bool IsNotValid { get; set; }  
} 

我的方法是像下面。

public TimesheetError Validate(Client client) 
{ 
    TimesheetError error = new TimesheetError(); 

    if (client.Name.IsEmpty()) 
    { 
     error.Messsage = "Bad request"; 
     error.ListErrors = "name is not enterd"; 
     error.Status = "Not Found"; 
     error.IsNotValid = true; 
    } 

    if (client.Contact.FirstName.IsEmpty()) 
    { 
     error.Messsage = "Bad Request"; 
     error.ListErrors = "Contact name is not entered"; 
     error.Status = "Not Found"; 
     error.IsNotValid = true; 
    } 

    return error 
} 

回答

3

改變你的方法是這樣

public List<TimesheetError> Validate(Client client) 
    { 
     List<TimesheetError> listerror=new List<TimesheetError>(); 
     if (client.Name.IsEmpty()) 
     { 
      TimesheetError error = new TimesheetError(); 
      error.Messsage = "Bad request"; 
      error.ListErrors = "name is not enterd"; 
      error.Status = "Not Found"; 
      error.IsNotValid = true; 
      listerror.Add(error); 
     } 
     if (client.Contact.FirstName.IsEmpty()) 
     { 
      TimesheetError error = new TimesheetError(); 
      error.Messsage = "Bad Request"; 
      error.ListErrors = "Contact name is not entered"; 
      error.Status = "Not Found"; 
      error.IsNotValid = true; 
      listerror.Add(error); 
     } 
     return listerror 
    } 
0

相應地核實您的信息。

public TimesheetError Validate(Client client) 
{ 

    TimesheetError error = new TimesheetError(); 

    if (client.Name.IsEmpty()) 
    { 
     error.Messsage = "Bad request"; 
     error.ListErrors = "name is not enterd"; 
     error.Status = "Not Found"; 
     error.IsNotValid = true; 
    } 
    if (client.Contact.FirstName.IsEmpty()) 
    { error.Messsage += " Bad Request"; 
     error.ListErrors += " Contact name is not entered"; 
     error.Status += " Not Found"; 
     error.IsNotValid += true; 
    } 
    return error 
0

我不返回對象的列表明白你想要什麼,如果他們倆真的第二,如果覆蓋在第一輸入的值,如果,如果你想同時存儲改變你的模型,你要多個值的值列表...

public class TimesheetError 
{ 
public List<string> Statuses { get; set; } 
public List<string> Messsage { get; set; } 
public List<string> ListErrors { get; set; } 
public bool IsNotValid { get; set; } 

} 
1

因爲你只有一次TimesheetError要覆蓋在山高的屬性nd if -statement。如果你想存儲所有可能的錯誤,你可以使用一個List<TimesheetError>

public IEnumerable<TimesheetError> Validate(Client client) 
{ 
    var errors = new List<TimesheetError>(); 
    if (client.Name.IsEmpty()) 
    { 
     var error = new TimesheetError(); 
     error.Messsage = "Bad request"; 
     error.ListErrors = "name is not enterd"; 
     error.Status = "Not Found"; 
     error.IsNotValid = true; 
     errors.Add(error); 
    } 
    if (client.Contact.FirstName.IsEmpty()) 
    { 
     var error = new TimesheetError(); 
     error.Messsage = "Bad Request"; 
     error.ListErrors = "Contact name is not entered"; 
     error.Status = "Not Found"; 
     error.IsNotValid = true; 
     errors.Add(error); 
    } 
    return errors; 
} 

您可以使用Enumerable.Any來檢查是否有在所有錯誤或使用FirstOrdefault拿到第一(或空,如果是沒有的)。或者使用一個循環:

foreach(TimesheetError error in Validate(client)) 
{ 
    // ... 
} 

這只是我的個人喜好返回IEnumerable<T>而不是List<T>。爲什麼應該允許這個方法的調用者添加或刪除列表中的錯誤?

Should I always return IEnumerable<T> instead of IList<T>?

+0

+1的鏈接。我習慣總是返回'List '。現在我也會根據手頭的情況做出決定。 –

0

是你的第二個條件將覆蓋第一if條件誤差值,因爲error是引用類型,其值在第二個條件得到更新,解決方法是創建TimesheetError對象的列表,這樣你就可以許多TimesheetError對象添加到您的List<TimesheetError>

public List<TimeSheetError> Validate(Client client) 
    { 
      List<TimeSheetError> error = new List<TimeSheetError>(); 
     //TimesheetError error = new TimesheetError(); 

     if (client.Name.IsEmpty()) 
     { 
      TimesheetError error1 = new TimesheetError(); 
      error1.Messsage = "Bad request"; 
      error1.ListErrors = "name is not enterd"; 
      error1.Status = "Not Found"; 
      error1.IsNotValid = true; 
error.add(error1); 
     } 
     if (client.Contact.FirstName.IsEmpty()) 
     { 
      TimesheetError error2 = new TimesheetError();  
      error2.Messsage = "Bad Request"; 
      error2.ListErrors = "Contact name is not entered"; 
      error2.Status = "Not Found"; 
      error2.IsNotValid = true; 
     error.add(error2) 
     } 

     return error 
0

如果你需要從方法返回兩個不同的「錯誤」,您將需要返回錯誤的集合,例如,您需要改變你的方法,像這樣:

public List<TimesheetError> Validate(Client client) 
{ 
    .... 

然後,創建錯誤對象時,將其添加到列表:

List<TimesheetError> errors = new List<TimesheetError>(); 

if (client.Name.IsEmpty()) 
{ 
    TimesheetError error = new TimesheetError(); 
    error.Messsage = "Bad request"; 
    error.ListErrors = "name is not enterd"; 
    error.Status = "Not Found"; 
    error.IsNotValid = true; 
    errors.Add(error); 
} 

if (client.Contact.FirstName.IsEmpty()) 
{ 
    TimesheetError error = new TimesheetError(); 
    error.Messsage = "Bad Request"; 
    error.ListErrors = "Contact name is not entered"; 
    error.Status = "Not Found"; 
    error.IsNotValid = true; 
} 

return errors