【发布时间】:2011-11-09 00:46:23
【问题描述】:
我有一组存储在视图模型中的电子邮件,我将其绑定到视图中的 ListBox。
@Html.TextBox("txtAddEmail") <img id="btnAddEmail">Add Email</img>
@Html.ListBox("Emails", Model.Emails)
@Html.ValidationMessageFor(m => m.Emails)
我希望用户能够通过在 txtAddEmail 文本框中输入电子邮件来添加电子邮件,然后单击添加图像按钮,然后将电子邮件添加到客户端的列表框中。然后,当表单发布时,电子邮件集合中会显示新闻电子邮件。我已经让添加该项目的客户端代码正常工作,但在发布时,电子邮件集合不包含新电子邮件。
var emailToAdd = $("#txtAddEmail").val();
$('#Emails').
append($("<option></option>").
attr("value", emailToAdd).
text(emailToAdd));
关于如何做到这一点的任何想法?
更新
我能够使用这个将一项添加到 ViewModel 中的值
@Html.ListBox("EmailAdded", Model.Emails)
添加到客户端的电子邮件显示在 EmailAdded 字符串值中,但是如何将其添加到集合中?我决定尝试直接绑定到电子邮件列表。添加到客户端上的列表框后,视图模型不显示添加的电子邮件。有什么想法吗?
@Html.ListBoxFor(model => model.Emails, new MultiSelectList(Model.Emails, "Id", "Address"));
@Html.ValidationMessageFor(m => m.Emails)
更新
找到了我正在寻找的答案here
【问题讨论】:
-
如何创建一个隐藏的文本框,当您将电子邮件添加到列表框时,它也会被添加到隐藏的文本框中,然后用逗号分隔它们,例如 email1、email2、email4 ,.... 并且该集合将在隐藏的文本字段中获取所有电子邮件地址,您可以为每封电子邮件拆分电子邮件字符串。集合通常从列表中获取选定字段的值
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2