C#.Net Framework 3.5 - System.FormatException:String未被识别为有效的布尔值

时间:2013-05-31 15:28:26

标签: c# .net

我遇到了以下问题并尝试了多种变体来尝试解决此问题:

bool selectOnlyPublished = Convert.ToBoolean((CMSContext.ViewMode == ViewModeEnum.LiveSite).ToString().ToLower());
TreeNode blogNode = BlogHelper.GetParentBlog(aliasPath, CMSContext.CurrentSiteName, selectOnlyPublished);

但它仍然抛出:System.FormatException:String未被识别为有效的布尔值。错误。

我尝试了以下内容:

  • Boolean.Parse()
  • Boolean.Parse(string.ToLower())
  • 甚至硬编码boolean类型的值。

但他们都给了我同样的错误。

4 个答案:

答案 0 :(得分:8)

为什么不这样做:

bool selectOnlyPublished = CMSContext.ViewMode == ViewModeEnum.LiveSite;
TreeNode blogNode = BlogHelper.GetParentBlog(
    aliasPath, CMSContext.CurrentSiteName, selectOnlyPublished);

答案 1 :(得分:2)

为什么要将CMSContext.ViewMode == ViewModeEnum.LiveSite的结果转换为bool?该代码的结果已经是bool类型。你可以这样做:

bool selectOnlyPublished = CMSContext.ViewMode == ViewModeEnum.LiveSite;

要回答原始问题,Convert.ToBoolean的结果是

  

如果value等于TrueString,则返回true;如果value等于FalseString或null,则返回false。

TrueString的值为TrueFalseString的值为False。取下你的字符串上的ToLower,它应该正确解析。

答案 2 :(得分:1)

如果您尝试

会发生什么
TreeNode blogNode = BlogHelper.GetParentBlog(
    aliasPath, CMSContext.CurrentSiteName, 
    (CMSContext.ViewMode == ViewModeEnum.LiveSite)
);

我假设 CMSContext.ViewMode 的数据类型是 ViewModeEnum

答案 3 :(得分:0)

为什么要在第一时间解析布尔值

bool selectOnlyPublished = (CMSContext.ViewMode == ViewModeEnum.LiveSite);

应该做的工作