2015-04-12 29 views
0

我正在用剃刀写我的第一个应用程序,并且发现它很有趣并令人上瘾。我在这个网站上找到了解决我的代码中很多错误真的很有用的答案。所以,已经向社区表示感谢。我已经完成了我的程序,这是一个测验网站,它允许用户将自己的问题和答案上传到数据库。使用HTML表单比较2个字符串

我遇到了一个问题,比较字符串,其中一个变量是通过使用get方法的html表单传递的。如果用户回答正确的答案,我的页面显示两个变量(字符串)是相同的,但在比较它们时,我的布尔仍然返回false。

对不起,如果这是显而易见的,或已经被问过。如果是这样,你能否将我重定向到一个能解释我做错了什么的源代码。 非常感谢 下面是部分代码不起作用

@{ 
var uAns = " "; 
var cAns = "x"; 
bool? anBool = null; // should set to true if user answer is correct 

if (!Request.QueryString["uAnswer"].IsEmpty()) 
{ 
    uAns = Request.QueryString["uAnswer"]; 
}  
    if (String.Equals(uAns, cAns, StringComparison.OrdinalIgnoreCase) == true) 
      { 
       anBool = true; 
      } 
      else 
      { 
       anBool = false; 
      } 
} 


<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 
     <form action="" method="get"> 
     <p><label for="uAnswer">Answer:</label> 
     <input type="text" name="uAnswer" value=" "/> 
     </p> 

     <p><input type="submit"/></p> 
     </form> 
     uAns = @uAns 
     cAns = @cAns 
     <p>anBool = @anBool</p> // why is this always false ?? :-(
    </body> 
</html> 
+0

只是为了更新 - 如果我自己的状态值更改为: 值=“@的Request.QueryString [” uAnswer“]” 我的工作形式,因为它应该。但值是: value =“@ uAns” 我的bool返回false。 由于:uAns = Request.QueryString [“uAnswer”]为什么一个工作,而不是其他? –

回答

0

你输入字段的默认值是一个单一的空间,而不是一个空字符串。如果您只需在输入字段中添加“x”并提交表单(而不删除空格),则查询字符串将显示为?uAnswer=+x而不是所需的?uAnswer=x

如果更换:

<input type="text" name="uAnswer" value=" "/> 

<input type="text" name="uAnswer" value=""/> 

一切都应该正常工作。

+0

谢谢 - 完美的工作和清晰的逻辑解释。 –