c# . net框架3.5 -系统.FormatException:字符串未被识别为有效的布尔值

本文关键字:识别 有效 布尔值 字符串 框架 net FormatException 系统 | 更新日期: 2023-09-27 18:16:13

我有以下问题,并尝试了多种变化,试图解决这个问题:

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

,但它仍然抛出:System。FormatException:字符串未被识别为有效的布尔值。错误。

我试过以下方法:

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

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

c# . net框架3.5 -系统.FormatException:字符串未被识别为有效的布尔值

为什么不这样做呢:

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

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

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

回答你最初的问题,Convert.ToBoolean的结果是

如果value等于TrueString为true,如果value等于false string或null为false。

TrueStringTrue, FalseStringFalse。取下字符串上的ToLower,它应该正确解析。

如果你尝试

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

我假设CMSContext的数据类型。ViewModeViewModeEnum?

为什么首先要解析布尔值

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

应该做这项工作