2009-12-21 190 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