1

我正在尝试将动态复杂模型传递给我的控制器,而不使用和编辑器视图模板。添加项目后,我的标记最终如下所示。

<ul>
    <li class="invItem">
        <input type="hidden" value="Bed California King" name="[0].efInvItem">
        <input type="hidden" value="4" name="[0].efRoomID"><span class="ui-icon ui-icon-circle-close removeItem"></span>Bed California King
    </li>
    <li class="invItem"><input type="hidden" value="Coffee Table Medium" name="[1].efInvItem">
    <input type="hidden" value="4" name="[1].efRoomID"><span class="ui-icon ui-icon-circle-close removeItem"></span>Coffee Table Medium
    </li>
    <li>
        <a href="#" class="addItem">Add inventory item to this room</a>
    </li>
</ul>

我正在使用 javascript,而不是编辑器视图模板来创建列表。将项目添加到此列表时,我正在重命名所有输入元素,以便我拥有输入项目的有序列表。

然后我通过以下方式接收控制器中的表单项

[HttpGet]
public ActionResult SendEstimate(ICollection<EstimateFormInventory> intentoryItems)

阅读这篇文章后按照建议的程序进行操作

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

然后通过将项目保存到数据库

db.EstimateFormInventory.Add(estimateFormInventory);
db.SaveChanges();

但是,当发布到数据库时,ICollection 没有被迭代,并且我正在使用空值创建 1 行。

我的模型如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace OCMovers.Models
{
    public class EstimateFormInventory
    {
        [Key]
        public int efiID { get; set; }
        public virtual Room efRoomID { get; set; } 
        public string efiInvItem { get; set; }
    }
}

我肯定错过了一些东西,任何建议都会很棒。

谢谢!

4

0 回答 0