我收集了一组存储在视图模型中的电子邮件,我将其绑定到视图中的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
答案 0 :(得分:2)
我很确定列表框中的项目会显示在帖子的表单集合中,因此需要选择它们。因此,为了解决这个问题,我通常会有一个jQuery函数来在提交表单时选择项目。
按照这样的提交按钮:
<input type="submit" onclick="SelectEmails();" />
这样的功能:
function SelectEmails()
{
$("#Emails option").attr("selected", "selected");
}
答案 1 :(得分:1)
尝试将jQuery元素更改为:
append($("<option selected='selected'></option>")
确保你也有:
<select multiple="multiple">