2

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

我有一个我目前正在开发的票务系统,其中一个字段是“主要联系人”——代码如下;

<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

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

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

任何帮助将不胜感激!

4

2 回答 2

1

很久以前使用过这种方法:http:
//blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

现在我使用这个:http:
//blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/

希望这些东西会有所帮助=)

于 2012-10-09T21:24:32.173 回答
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="" />

重要的是每个字段的“名称”属性相同(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="" />

希望这个对你有帮助

于 2012-10-09T21:29:34.570 回答