我有一个存储在 View 模型中的电子邮件集合,我将其绑定(bind)到 View 中的列表框。
@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 字符串值中,但如何将其添加到集合中?我决定尝试直接绑定(bind)到电子邮件列表。添加到客户端上的列表框后, View 模型不会显示添加的电子邮件。有什么想法吗?
@Html.ListBoxFor(model => model.Emails, new MultiSelectList(Model.Emails, "Id", "Address"));
@Html.ValidationMessageFor(m => m.Emails)
更新
找到了我正在寻找的答案here
最佳答案
我非常确定,为了使列表框中的项目显示在帖子的表单集合中,需要选择它们。因此,为了解决这个问题,我通常使用 jQuery 函数来在提交表单时选择项目。
让你的提交按钮像这样:
<input type="submit" onclick="SelectEmails();" />
还有一个像这样的函数:
function SelectEmails()
{
$("#Emails option").attr("selected", "selected");
}
关于asp.net-mvc - 将项目添加到 asp.net mvc 列表框客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059089/