1

ビューにリストを動的に入力しようとしています。つまり、ユーザーはいくつかの「アイテム」(このアイテムはオブジェクトでもあります) を選択し、その選択によってオブジェクトの新しいリストを作成する必要があります。問題は、選択した値を後で保存するために @Html.TextBoxFor() を空のリストにバインドしようとすると、もちろんリストにオブジェクトがまだないため、null 参照例外が生成されることです。

// 問題を説明するコード - この DDL は、ユーザーがそれらのいくつかを選択できるように、すべての「アイテム」をもたらします //

 @Html.DropDownListFor(m => m.ItemsToSelect, new SelectList(Model.ItemsToSelect.Select(s => new { s.id, s.descripcion}).ToList(), "id", "descripcion"))

このコードは、POSTBACKを実行するときにオブジェクトを取得するためだけに、空のリストをコンボに関連付けようとしています

 @Html.TextBoxFor(m => m.selectedItems[0].id)

この最後のテキスト ボックスは、最初は null です。実際に機能する解決策の 1 つは、このリストに空のオブジェクトを入力することですが、それを解決するには別の方法が必要だと思います。

皆さんのおかげで、誰かが私が解決しようとしていることを理解してくれることを願っています.

4

2 に答える 2

0

問題が発生しました。ページがレンダリングされた時点で存在しないアイテムにテキストボックスをバインドしようとしています。

解決策は簡単です。通常の HTML コントロールを作成し、モデルに一致するプロパティを<input type='text' name='someProperty' />与えるだけです。nameASP.NET MVC は、フォームを投稿すると、これをモデルに自動的に追加します。

public class MyModel
{
    string someProperty {get; set;}
}

アイテムが選択されたときに、テキストボックスの値を入力する必要がある場合があります。たとえば、jquery を少し使用します。$('#myDDL').change(function() { $('#myTextbox').val($('#myDDL').val()) });

または、上記の方法を使用してドロップダウン リスト自体を送信することもできnameます。選択した値が送信され、複数が選択されている場合はおそらくコンマで区切られます。

于 2013-06-29T11:54:48.633 に答える
0

selectedItemsnullではないことを確認してみませんか?

@if (Model.selectedItems != null && Model.selectedItems.Count() > 0) {
   @Html.TextBoxFor(m => m.selectedItems[0].id)
}
于 2013-06-28T14:33:15.473 に答える