1

MVCScaffolding 機能を使用して、EF4.1 を使用して保存されたデータの CRUD UI を作成しています。

基本的なシナリオではうまく機能し、すべてのデータをテキスト ボックスにバインドします。

ただし、"Person" オブジェクトの "Title" プロパティを選択リストにバインドする必要があります。ビュー モデルを作成する必要はなく、ビューを実際の人物モデルにバインドすることに固執することを望んでいました。

public class Person    {
    public string Title { get; set; }
    .......

これは私の見解ですが、選択したアイテムが正しくバインドされていません。実際のデータは異なる可能性がありますが、選択された項目として常に「Mr」が表示されます。

@Html.DropDownListFor(model => model.Title, new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))

これはどちらも機能しません:

@Html.DropDownList("Title", new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))

ただし、これは次のことを行います。

@Html.DropDownList("TitleX", new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))

しかし、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。レコードを更新しようとすると例外が発生します。

モデルやコントローラーへの影響を最小限に抑えて、これを機能させるにはどうすればよいですか?

4

1 に答える 1

0

最初のものは正しいはずです。コントローラーがビューを返す前に、[タイトル]フィールドが実際にデータベースに存在するものに設定されているかどうかを確認しましたか。また、スペルをチェックし、たとえばテキストの後ろにドットを付けます。データベースにある場合は「Ms.」が存在する場合、Ms。がリストに存在しないため、最初のアイテムでドロップダウンが開きます。

于 2011-07-27T09:58:22.237 に答える