2009-08-18 18 views
3

私はこのフォームであるこのASP.NET MVCでチェックボックスがオンになっているかどうかを確認するにはどうすればよいですか?

のように見えるいくつかのチェックボックスがあります。だから私のアクションメソッドに行くとき、私はちょうどフォーム変数を持っています。今私はしようとする

frmSign ["覚えて]";

私はこれをすぐにブール値に変換しようとしましたが、失敗しました。私は、やった.toString()と私はこの中に含まれている値は

これは正常です「偽真」

であることに気づきましたか?それはなぜ本当ですか、偽ですか?今は真実か偽ですか?

+0

ページに2つありますか? –

+0

それは私が探した最初のものではありません。私は何も持っていない。 私はこれを持っていますが、火薬瓶を介して気づいた。これが正常かどうかはわかりません。 chobo2

+0

Ah。まあ、私は特にMVCについて何も知らないので、大丈夫です。私は、他のポスターの方がより役に立つと思うので、私はあなたにそれを残すでしょう。しかし、純粋な「要求」の観点からは、2つの値が説明されています。 –

答えて

9

あなたは自分の行動にブール・パラメータを追加することができます。

public ActionResult LogIn(string username, string password, bool remember) 
{ 
    // You have it 
} 

また、あなたはValueProviderResultを得るために、[「忘れないでください」] RouteValuesを使用することができます。

public ActionResult LogIn(string username, string password) 
{ 
     bool remember = false; 
     ValueProviderResult val; 
     if (RouteValues.TryGetValue(key, out val)) 
      remember = (bool)val.ConvertTo(typeof(bool)); 
     // Now you have it 
} 

をしかし、私は明白な理由のための第一のオプションを好む:
だから、あなたが行うことができます。質問については

はこの正常ですか?なぜそれは本当ですか、偽ですか?それは今や真実か間違っていますか?

はい正常です。 MVCのチェックボックスヘルパーは、常に値 "False"の隠し入力を生成します。チェックボックスが選択されていない場合は、Falseの値を指定する必要があります。
なぜですか?
W3.ORGによれば、チェックボックスが選択されている場合、値はサーバーにのみポストされます。そうでない場合、値はTrueまたはFalseであるかどうかわかりません(例:null)。

"true、false"というチェックボックスをオンにすると、値がtrueであると見なすことができます。
チェックボックスが選択されていない場合は、サーバーに「false」と表示され、サーバーが選択されていないことを確認できます。

詳細を明らかにする:同じ名前のの値(W3.ORGによる)はコンマで区切られています。したがって、たとえ入力が異なるタイプ(チェックボックス、ラジオ、テキスト、隠しなど)であっても、単一のフォーム内で同じ名前の異なる入力を持つことはまったく問題ありません。

+0

ya最初のオプションは動作しますが、私はfrmCollectionでそれを持っている理由が分かりません。これは何らかのバグであるか、私は間違ったことをしています。私はfrmCollectionが好きです。なぜなら、UpdateModelに物事を渡すのがずっと簡単になるからです。私はfrmCollectionを保持し、boolパラメータを渡すことができたと思います。これを行うにはちょっと変わったようです。 – chobo2

+1

私は説明を追加しました。 –

関連する問題