0

MVC3モデル内の文字列の小さなセットからオプションを選択するためのラジオボタンリストを提供しようとしています。私が取り組んでいるのは、調査内の質問用のエディターテンプレートです。

これまでのところ、私はBrad Christieのアドバイスに従いました。これにより、ビューを適切にレンダリングすることができました。関連するコードは次のとおりです。

モデル-Question.cs

(これは実際にはモデルファーストのEFエンティティですが、重要ではないと思います)

public class Question {
    // snip unimportant properties
    public string QuestionType { get; set; }
}

表示-Question.cshtml

// snip unimportant view code

<div class="control-group">
    @Html.LabelFor(model => model.QuestionType, "Question Type")
    <div class="controls">
        @Html.EditorFor(model => model.QuestionType, "QuestionType")
        @Html.ValidationMessageFor(model => model.QuestionType)
    </div>
</div>

表示-QuestionType.cshtml

@model System.String

@{
    var questionTypes = new String[] { "PickOne", "PickMany", "OpenEnded" };
    var typesMap = new Dictionary<String, String> {
        { "PickOne", "Pick a single answer" },
        { "PickMany", "Pick several answers" },
        { "OpenEnded", "Open-ended answer" }
    };
}

@foreach (var questionType in questionTypes) {
    <label class="radio">
        @Html.RadioButtonFor(model => model, questionType)
        @typesMap[questionType]
    </label>
}

ビューは正しいHTMLを作成しますが、調査用のエディタービューをロードすると、ページのロード時にその質問タイプに対応するラジオボタンが事前に選択されていません。これはモデルのバインドに関係していると思いますか?

データベースに存在する選択に基づいて、正しいラジオボタンを事前に選択するにはどうすればよいですか?重要な場合は、永続層としてモデルファーストのEntityFramework4を使用しています。

4

1 に答える 1

1

RadioButtonに基づいてエディターテンプレートで値を選択しない

モデルのバインドは問題ありません。問題はそれだけです。

@Html.RadioButtonFor(model => model, questionType)

空の名前に対応し、空の名前のRadioButtonForラジオボタンをチェックすることはありません。

あなたができるはずです

@Html.RadioButton("", questionType, questionType == Model)
于 2012-05-18T00:29:11.677 に答える