チェックボックスとボタンがあります:
@using(Html.BeginForm())
{
<div id="search-block">
<input type="checkbox" name="showAll" id="showAll">Include completed
<input type="submit" value="Apply"/>
</div>
}
コントローラーの2番目のもの:
[HttpPost]
public ActionResult Index(FormCollection collection)
{
var showAll = collection["showAll"];
TempData["showAll"] = showAll;
...
something
...
}
それは実際に機能していますが、:
チェックボックスがチェックされていない場合、私はnullを受け取ります(あまり気になりません)。
チェックボックスがオンになっている場合、FormCollection
から「オン」を受信していますが、これは必要なものではありません。真か偽かを受け取りたい。
これどうやってするの?
<input type="checkbox" name="showAll" id="showAll">Include completed
"on"
または"off"
の値を投稿します。
このWONTはブール値にバインドします、
ブール値を受け取るには、HTML Helper CheckboxLikeを使用できます。
@Html.CheckBox("showAll")
<label for="showAll" style="display:inline">Include completed</label>
更新:
チェックされている場合、htmlヘルパーは
"true,false"
をポストバックし、チェックされていない場合は"false"
としてポストバックします。
あなたはこの回避策を持つことができます
bool MyBoolValue= Convert.ToBoolean(collection["showAll"].Split(',')[0]);
これは、Htmlヘルパークラスがチェックボックスの状態を保存するために追加のhidden
フィールドを追加するためです。
だから私はこれにショットを与えました、そしてそれを撮ることは幸せであるように見えました、ここでコレクションは私のFormCollectionオブジェクトです:
if (collection.AllKeys.Contains("Inactive"))
{
np.Inactive = false;
}
else
{
np.Inactive = true;
}
ターゲット要素の名前がわかりにくいことをご承知おきください。ただし、これは私が求めていた意図した結果でした。
入力タグを試してみましたが、次のように機能します。
<form method="post">
<input type="checkbox" id="chkRmb" name="chkRmb" /> Remember Me?
<input type="submit" value="Log In" class="btn btn-default login-btn" />
</form>
コントローラで、文字列値を比較し、ブール値に変換します。
bool rmbMe = (formdata["chkRmb"] ?? "").Equals("on", StringComparison.CurrentCultureIgnoreCase);
私はこれを機能させるのに苦労しました、そしてこれは私が思いついた解決策です。私はそれをhtmlヘルパーで示しています。
@Html.CheckBoxFor(model => model.showAll, new { @class = "form-control", Name = "showAll"})
これは私が転倒し続けた場所であり、次の作業が行われます。
bool MyBoolValue= (collection["showAll"] ?? "").Equals("true", StringComparison.CurrentCultureIgnoreCase);
これを試してみてください、それは私にとってこれと同じ問題を解決しました。将来、他の人がこの問題に遭遇した場合に備えて、共有したいと思いました。
[HttpPost]
public ActionResult Index(FormCollection collection)
{
Boolean tempValue = collection["showAll"] != null ? true : false;
TempData["showAll"] = tempValue;
...
something
...
}