2012-05-09 11 views
0

非常に奇妙なケースがあります。チェックボックスからコントローラに値を投稿します。MVC 3でチェックボックスをチェックした場合、値が正しくありません

私のViewModelのパート:私の見解の

public class BeslutIStortViewDTO 
{ 
    public BeslutIStortDTO BeslutIStort { get; set; } 
    public BeslutIStortListorDTO SelectListor { get; set; } 
} 

public class BeslutIStortDTO 
{ 
    public int id { get; set; } 
    public bool Ok { get; set; } 
    ... other stuff 
} 

一部:コントローラに渡された文字列で

<div id="colOk" class="kolumn_header"> 
    @Html.LabelFor(model => model.BeslutIStort.Ok) 
    @Html.CheckBoxFor(model => model.BeslutIStort.Ok, new { @class = "rensa", tabindex = 5 }) 
</div> 

、未確認の中のボックスは、すべてがOKと思われる:

BeslutIStort.Ok=false 

BUT!私はそれをチェックする場合:

BeslutIStort.Ok=&BeslutIStort.Ok=false 

その二回の文字列で、最初の値がない、oterhはfalseあるので、両方が間違っています。私はもちろん、1つだけを期待し、その1つはtrueであると考えます。

<input class="rensa" id="BeslutIStort_Ok" name="BeslutIStort.Ok" tabindex="5" type="checkbox" value="true" /><input name="BeslutIStort.Ok" type="hidden" value="false" /> 

それは隠しフィールドがあります。

もう一つの興味深い発見はacutalレンダリングされたHTMLには、チェックボックスが次のようになりますということです!私は誰かがこのにいくつかの光を当てるために私を助けることができる願ってい

data: $("#BisData").serialize(), 

、および:

私は、サーバーに値を投稿するとき、私はAJAXでそれを行うと、データパラメータは、次のように定義されています私はそれが出てturedたよう=== を解決し

=== :-)私のコントローラにいくつかの "真の" ヘルプ、私はこのようなjavascriptを持っていた:。

$( "rensaを")のvalを( "");

チェックボックスは機能しませんでした。私はこれを加えました:

$( "。rensaCheckbox")。attr( "checked"、false);

チェックボックスのため、今すぐ動作します。

+0

#BisDataはフォームタグIDですか? – Thulasiram

+0

はいそれは______ – kaze

+0

k ..警告を追加します($( "#BisData")。serialize());この出力をここに入れてください... – Thulasiram

答えて

1

それはaintのその奇妙いずれか..
レイザーエンジンが自動的に同じ名前と、使用これまでのフォーム内の偽の値で隠しフィールドを置きますので、あなたが値を2回BeslutIStort.Ok=&BeslutIStort.Ok=false を受け取っているすべての最初の @Html.CheckboxFor()
これはチェックボックスがチェックされていなくてもfalseの値が返されるように行われます。

second ...入力(チェックボックス)htmlコントロールに値がないため、null値が返されます。値を返す必要がある場合は、次のコードを追加してください。

<div id="colOk" class="kolumn_header"> 
    @Html.LabelFor(model => model.BeslutIStort.Ok) 
    @Html.CheckBoxFor(model => model.BeslutIStort.Ok, new { @class = "rensa", tabindex = 5,value="true" }) 
</div> 
+0

生成されたhtmlをですが、残念ながらそれをシリアル化するときは同じです。 – kaze

+0

あなたはこのようなものです... BeslutIStort.Ok =&BeslutIStort.Ok = false –

+0

はい、チェックされています。チェックしていないときは、BeslutIStort.Ok = falseのみです。 – kaze

関連する問題