【解決方法】文字列が有効なブール値として認識されませんでした。

[ad_1]

やあ、ピープス、

コード内で小さな (おそらく愚かな) エラーが発生しています。 なぜそれが起こっているのかはわかりませんが、ここの誰かがこれに光を当ててくれることを願っています。

まず最初に、データベースから単一の値を要求するデータセットがあります。

SQL
SELECT [menu$IsActive] FROM [Menu$Main] WHERE ([menu$NavURL] = @NavigateURL) AND ([menu$Host] = @Host)

私のコードには、(Page_Load イベント ハンドラーに) 次のものがあります。

C#
bool MenuIsActive = bool.Parse(taMenuBack.GetCurrentMenuState(HttpContext.Current.Request.Url.ToString(), HttpContext.Current.Request.URL.Host).ToString());

if (MenuIsActive)
{
    btnChangeStatus.Text = "Set to Inactive";
} else {
    btnChangeStatus.Text = "Set to Active";
}

ページをプレビューすると、「文字列は有効なブール値として認識されませんでした」というメッセージが表示されます。 データセット内の SQL クエリは「Scalar」に設定されており、返される結果は間違いなくブール値です (返される実際の列タイプは「bit」です)。 これを行うと:

C#
string testString = taMenuBack.GetCurrentMenuState(HttpContext.Current.Request.Url.ToString(), HttpContext.Current.Request.URL.Host).ToString()

「True」を返します。 何か案は?

解決策 1

使ってみてください Boolean.Parse
実際には Boolean.TryParse それが最善の策でしょう。

2 つの違いは CLS への準拠に関係している可能性があります。
私の知る限り、「True」と「False」は伝統的に VB.Net のブール型です。

解決策 2

おい、QmarsDev を聞いてください
最良の方法は TryParse を使用することです

string boolString = "True"; // Example boolean string
bool boolValue;

if (bool.TryParse(boolString, out boolValue))
{
    Debug.Log("Parsed boolean value: " + boolValue);
}
else
{
    Debug.LogError("Failed to parse boolean value.");
}

[ad_2]

コメント

タイトルとURLをコピーしました