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

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

我有一个存储在 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/

相关文章:

c# - 如果返回值为 null 或为空,则显示一些默认文本

.net - Html.HiddenFor 有什么作用?

c# - HttpClient PutAsync 不向 api 发送参数

asp.net-mvc - 如何使代码缩进在 vbhtml razor 文件中正确运行?

c# - 将字典传递给 View Asp.net MVC

c# - 逐步更新 ASP.NET MVC 中的模型

asp.net-mvc - 如何使用 Microsoft.AspNetCore.Authentication.Google 强制 HTTPS 回调?

css - 在表单内对齐 Div 文本

ASP.NET MVC 2.0 客户端验证 HOWTO

asp.net-mvc-2 - 使用 WebClient 发布 C# 对象的集合