1

これが私の関連するビットです

ビューモデル:

    [Display(Name = "One Per Line")]
    public bool OnePerLine { get; set; }

    [Display(Name = "Comma Separated")]
    public bool CommaSeparated { get; set; }

    [Display(Name="Upper Case")]
    public bool UpperCase { get; set; }

意見:

                    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
                {
                    .

                    .
                    <div class="control-group">
                        @Html.LabelFor(m => m.OnePerLine, "One Per Line?", new Dictionary<string, object> { { "class", "control-label" } })
                        <div class="controls">
                            @Html.CheckBoxFor(m => m.OnePerLine)
                        </div>
                    </div>
                    <div class="control-group">
                        @Html.LabelFor(m => m.CommaSeparated, "Comma separate them?", new Dictionary<string, object> { { "class", "control-label" } })
                        <div class="controls">
                            @Html.CheckBoxFor(m => m.CommaSeparated)
                        </div>
                    </div>
                    <div class="control-group">
                        @Html.LabelFor(m => m.UpperCase, "Uppercase?", new Dictionary<string, object> { { "class", "control-label" } })
                        <div class="controls">
                            @Html.CheckBoxFor(m => m.UpperCase)
                        </div>
                    </div>
                    .
                    .
                }

そして、投稿中にフィドラーで見たものは次のとおりです。

OnePerLine=true&OnePerLine=false&CommaSeparated=true&CommaSeparated=false&UpperCase=true&UpperCase=false

これがコントローラーに到達すると、ビューモデルにビューからの正しい値が含まれますが、投稿本文で倍増が奇妙であることがわかります。

4

1 に答える 1

0

もう少し掘り下げて、ここで答えを見つけました。

Html.Checkbox ヘルパーは追加の非表示の入力をレンダリングして、チェックされていないチェックボックスがリクエストで送信されないシナリオに対処します。

于 2013-05-13T15:11:18.520 に答える