将项目添加到asp.net mvc列表框客户端?

时间:2011-11-09 00:46:24

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我收集了一组存储在视图模型中的电子邮件,我将其绑定到视图中的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

2 个答案:

答案 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">