1

ここでいくつかのトピックを見ましたが、チェックボックスから値を取得する際にまだ問題があります。

モデルの一部:

public Dictionary<Language, bool> TargetLanguages { get; set; }

ビューの一部:

    <div class="editor-label">
        <label for="TargetLanguages">select target languages</label>
    </div>
    <div class="editor-field">
        <form>
            @foreach (var item in Model.TargetLanguages)
            {                    
                @Html.CheckBox("TargetLanguages["+item.Key.Name+"]", item.Value)
                @item.Key.Name
            }
        </form>
    </div>

コントローラの一部:

    [HttpPost, ActionName("AddDictionary")]
    public ActionResult AddDictionary(FormCollection collection)
    {
     ...
    }

問題は、FormCollection に TargetLanguages の痕跡がまったくないことです。CheckBoxFor を試しましたが、役に立ちませんでした。私も手動でチェックボックスを書いてみました。

EDITED:さて、問題がどこにあるかに気づきました。マーカーがめちゃくちゃで、それが FormCollection からデータを取得できない理由です。

4

2 に答える 2

2

すべてのチェックボックスを同じ名前で作成します。このサンプルでは、​​'SelectedTargetLanguages' を使用しています。

@using (Html.BeginForm())
{
    foreach (var item in Model.TargetLanguages)
    {
        <label>
            @Html.CheckBoxFor(m => m.SelectedTargetLanguages, item.value)
            @item.KeyName
        </label>
    }
    <br/>
    @Html.SubmitButton("Actualizar listado")
}

次に、アクションでは、パラメーターは次のような文字列の配列である必要があります。

public ActionResult AddDictionary(string[] selectedTargetLanguages)

引数の名前は、チェックボックスの名前と同じであることに注意してください。(異なるケーシングでも動作します)。

ジェネリックではなく、このような明示的な引数を使用する必要がありますFormCollection。とにかく、FormCollection を使用する場合は、配列も受け取る必要があります。

于 2013-07-09T11:42:44.253 に答える
1

私は以前に同じタイプの質問をしました。以下のリンクを確認してください

MVC3 @Html.RadioButtonfor ビューからコントローラーにデータを渡す

MVC3 @html.radiobuttonfor

これはあなたを助けるかもしれないと思います。

于 2013-07-09T12:04:58.597 に答える