0

オブジェクトのリスト「連絡先」を含む ViewBag からのデータを表示する選択入力があります。

<select id="choix_contact" onchange="javascript:RemplirTextbox();">
       <option>Choisir un contact</option>
             @if (ViewBag.ListeContacts != null)
                 {
                      foreach (var Contact in ViewBag.ListeContacts)
                           {
                                 <option>@Contact.Nom</option>
                           }
                 }
                 else
                 {
                    <option>Pas de contact</option>  
                 }

問題は、選択時に onchange JavaScript イベントを処理したいということです。リストで連絡先を選択するときに、テキスト ボックスに連絡先の他のプロパティを入力したいと思います。リストには、次のようにプロパティとの連絡先が含まれています。

new Contact(nom_contact, prenom_contact, email_contact, formation_contact, telephoneFixe_contact, telephonePortable_contact)

たとえば、Hubert という名前の連絡先を選択すると、下のテキスト ボーで、連絡先の番号が Id : TelNumber とともにテキスト ボックスに表示されます。私は多くのことを試しましたが、foreach の外では、オブジェクトのプロパティにアクセスする方法がわかりません。これを行うことで、リスト内のオブジェクトのインデックスを知ることができることを私は知っています:

int index = ViewBag.ListeContacts.IndexOf(Contact);

誰かがアイデアを持っていますか?残ってない…

4

1 に答える 1

2

カミソリ変数を JavaScript とインラインで取得するという煩雑さを避けるようにしてください。

また、可能な限り ViewBag を使用しないようにしてください。

コントローラーの 1 つに、Contact 文字列をパラメーターとして受け取り、データベースにアクセスして、必要な変数のリストを返すメソッドを用意することで、これにアプローチします。

次に、javascript のイベント ハンドラーをドロップダウン ボックスの値変更イベントに追加し、コントローラー メソッドへの Ajax 呼び出しを開始します。これにより、データ ストレージにアクセスして値が返され、ajax を介して JS に渡されます。その後、自由にテキストボックスにデータを入力できます。

于 2013-08-01T14:28:19.073 に答える