我视图中的模型属性的多个值

时间:2012-10-09 21:08:58

标签: jquery asp.net-mvc

这让我完全难过,所以我想我会四处询问,看看是否有解决方案!

我有一个我目前正在处理的票务系统,其中一个字段是“主要联系人” - 下面的代码;

<tr>
    <td>
        @Html.Label("Client Contact:")
    </td>
    <td>
        @Html.TextBoxFor(model => model.PrimaryContact, new { placeholder = "Primary contact for this ticket." })
        <br />
        @Html.ValidationMessageFor(model => model.PrimaryContact)
    </td>
</tr>

我有一个用户请求功能;能够说出一个“+”按钮,他们可以点击它,它会添加另一个字段(我将通过javascript完成此操作。)但是,我需要将javascript创建的字段绑定到Model.PrimaryContact ..所以实质上,当用户为另一个联系人添加另一个文本框时,它将使“Model.PrimaryContact”的值如下所示:

Billy Joe 918-555-5556,Bobby Jane 876-222-3334

然后当它被发布到控制器时,我可以简单地将其插入数据库。

我不太确定如何实现这一点但我相信我需要某种以逗号分隔的自定义模型绑定器?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

将“model.PrimaryContacts”更改为字符串列表List<string>并呈现:

    <input type="text" id="PrimaryContacts[0]" name="PrimaryContacts[0]" value="" />
    <input type="text" id="PrimaryContacts[1]" name="PrimaryContacts[1]" value="" />
    <input type="text" id="PrimaryContacts[2]" name="PrimaryContacts[2]" value="" />
    <input type="text" id="PrimaryContacts[3]" name="PrimaryContacts[3]" value="" />

重要的是每个字段上的“name”属性相同 (id无关紧要),它们会自动绑定到数组或集合中。

<强>更新

如果我们假设PrimaryContact是具有FirstName,LastName和PhoneNumber属性的对象,那么我们需要在页面上呈现以下标记:

    <!-- 1st person -->
    <input type="text" id="[0].FirstName" name="[0].FirstName" value="" />
    <input type="text" id="[0].LastName" name="[0].LastName" value="" />
    <input type="text" id="[0].PhoneNumber" name="[0].PhoneNumber" value="" />
    <!-- 2nd person -->
    <input type="text" id="[1].FirstName" name="[1].FirstName" value="" />
    <input type="text" id="[1].LastName" name="[1].LastName" value="" />
    <input type="text" id="[1].PhoneNumber" name="[1].PhoneNumber" value="" />

上面会绑定到List<PrimaryContact>个对象。

更新2:

最后但并非最不重要的是,要绑定到Dictionary<string, PrimaryContact>,请执行此操作:

<!-- 1st person -->
<input type="hidden" id="[0].Key" name="[0].Key" value="1stPersonKey" />
<input type="text" id="[0].FirstName" name="[0].Value.FirstName" value="" />
<input type="text" id="[0].LastName" name="[0].Value.LastName" value="" />
<input type="text" id="[0].PhoneNumber" name="[0].Value.PhoneNumber" value="" />
<!-- 2nd person -->
<input type="hidden" id="[1].Key" name="[1].Key" value="2ndPersonKey" />
<input type="text" id="[1].FirstName" name="[1].Value.FirstName" value="" />
<input type="text" id="[1].LastName" name="[1].Value.LastName" value="" />
<input type="text" id="[1].PhoneNumber" name="[1].Value.PhoneNumber" value="" />

希望这有点帮助