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>  
                 }

问题是我想处理 select 上的 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

您应该尽量避免陷入将 razor 变量与您的 javascript 内联的混乱局面。

此外,尽量避免使用 ViewBag。

我将通过在您的一个控制器上使用一个方法来解决此问题,该方法将联系人字符串作为参数,并访问您的数据库并返回您想要的变量列表。

然后,将 javascript 中的事件处理程序添加到下拉框的值更改事件,并触发对控制器方法的 Ajax 调用。然后,这将访问您的数据存储,并返回值,然后通过 ajax 将其反馈给您的 JS。然后,您可以在闲暇时填充您的文本框。

于 2013-08-01T14:28:19.073 回答