2009-12-21 188 views
2

我有if語句中的if語句。如果聲明

如果第二個if語句中的條件返回false,我想轉到第一個else ,因爲它在那裏自動設置我的驗證控件。

我希望你明白

if (page.isvalid()) 
{ 
    if (datetime.tryparse (date) == true) 
    { 
     // ok  
    } 
    else 
    { 
     //go to the other else 
    } 
} 
else 
{ 
    // want to go here 
} 

編輯:

重要的是我必須先確認該網頁,因爲驗證後,我知道我可以從2個輸入控制和檢查解析日期時間如果第二個比第一個大。否則,它會拋出一個異常,也許,如果日期無效。

回答

1

取出別人的,它應該是你在找什麼。另外,在一切都很好之後添加一個return語句。

if (page.isvalid()) 
{ 
    if (datetime.parse (date) == true) 
    { 
     // ok  
    } 
    return; 
} 

// code here happens when it's not valid. 
+0

這個工作與很少適應。嗯似乎不是那麼正確,但...沒有其他完整的解決方案 – 2009-12-21 21:12:04

+1

你是什麼意思的「適當」?這是基本的流量控制。請記住,在.NET語言中,void方法在滿足最後一個'}時隱式返回。任何時候退出方法都是完全有效的。根據你的上下文,你可能需要翻轉邏輯來說'if(!Page.IsValid){/ *無效代碼塊* /} else {/ *有效代碼* /}'。另一種選擇是將「有效」代碼和「無效」代碼重構爲方法,並說'if(Page.IsValid()){ValidMethod():} else {InValidMethod();}' – 2009-12-21 23:49:47

9

代替DateTime.Parse(日期)使用

DateTime dt; 
bool isParsed = DateTime.TryParse(date, out dt); 

//if (page.isvalid() && (datetime.parse (date) == true)) 
if (page.isvalid() && isParsed) 
{   
    // ok   
}  
else  
{  
    // want to go here 
} 
+0

這是一個很好的布爾檢查,但是當頁面有效並且datetime不解析時,它會落入//想要到這裏的部分,這看起來不正確。 – 2009-12-21 20:39:38

+1

它可能看起來並不「正確」,但它恰恰是提問者所要求的。 – 2009-12-21 20:42:36

+0

@Jim - 這是OP要求的! – Dexter 2009-12-21 20:42:57

1

這確實是你想要的,我相信。

if (page.isvalid() && datetime.tryparse(date) == true) 
{   
    // ok 
} 
else 
{ 
    // want to go here 
} 

不確定'== true'是否必要;你可能會放棄這個條件。

0

正是你想要做的是不可能的。有兩種選擇。一個是在你的if子句的頂部確定兩個答案。這是其他海報告訴你要做的。另一種辦法是這樣的:

bool isvalid = true; 
if (page.isvalid()) 
{  
    if (datetime.tryparse (date) == true)  
    {   
     // ok   
    } 
    else  
    {  
     isvalid = false;  
    } 
} 
else 
{ 
    isvalid = false; 
} 
if (isvalid == false) 
{ 
    //do whatever error handling you want 
} 

這提取錯誤從else子句處理代碼,並把它的地方,這兩個代碼路徑可以到達。

+0

非常詳細 - 準確,但非常詳細。 – 2009-12-21 20:55:28