Asp.net mvc ASP MVC3-在回发时向控制器返回空值的编辑器模板

Asp.net mvc ASP MVC3-在回发时向控制器返回空值的编辑器模板,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,mvc-editor-templates,icollection,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,Mvc Editor Templates,Icollection,我已经为一个项目奋斗了几天,在我当前的迭代中,我决定使用一个编辑器模板 最初的问题源于主表通过SQL中的外键链接到辅助表。在ASP MVC中,次表用以下字段表示: [UIHint("BankListAgentId")] public virtual ICollection<BankListAgentId> BankListAgentId { get; set; } 这是编辑器模板。它的名称是BankListAgentId,位于视图文件夹中名为Ed

我已经为一个项目奋斗了几天,在我当前的迭代中,我决定使用一个编辑器模板

最初的问题源于主表通过SQL中的外键链接到辅助表。在ASP MVC中,次表用以下字段表示:

    [UIHint("BankListAgentId")]
    public virtual ICollection<BankListAgentId> BankListAgentId { get; set; }
这是编辑器模板。它的名称是
BankListAgentId
,位于视图文件夹中名为
EditorTemplates
的文件夹中

最后是
BankListAgentId
模型

public partial class BankListMaster
{
    public BankListMaster()
    {
        this.BankListStateCode = new HashSet<BankListStateCode>();
        this.BankListAgentId = new HashSet<BankListAgentId>();
        this.BankListAttachments = new HashSet<BankListAttachments>();
    }

    public int ID { get; set; }
    public string BankName { get; set; }

    public virtual ICollection<BankListStateCode> BankListStateCode { get; set; }
    public virtual ICollection<BankListAttachments> BankListAttachments { get; set; }

    [UIHint("BankListAgentId")]
    public virtual ICollection<BankListAgentId> BankListAgentId { get; set; }
}
public partial class BankListAgentId
{
    public string AgentId { get; set; }
    public int ID { get; set; }
    public string FixedOrVariable { get; set; }
    public string StateCode { get; set; }

    public virtual BankListMaster BankListMaster { get; set; }
}
编辑


用户需要能够动态更改列表。

我认为您需要在集合上进行迭代,而不是foreach,以便正确绑定字段名

@for (int i = 0; i < Model.BankListAgentId.Count; i++)
            {                    
                if (!String.IsNullOrWhiteSpace(Model.BankListAgentId[i].AgentId) && Model.BankListAgentId[i].FixedOrVariable.Equals("Fixed"))
                {
                    @Html.EditorFor(model => Model.BankListAgentId[i])
                }
            }
for(int i=0;imodel.BankListAgentId[i]) } } 你也应该发布你的接收结果


但正如DaveA正确指出的那样,模型是ICollection,这将导致问题。它不能是IEnumerable吗?

ICollection的索引?这会破坏运行时。我认为IEnumerable也不能索引。必须使用IList。唯一的潜在问题是,如果NealR需要使用foreach,该解决方案是否允许用户动态添加到列表中?否,这将取决于您通过AJAX或类似方法创建这些操作,以便在用户向列表中添加新元素时,动态迭代构建该集合。我最近也做了类似的事情,在一个儿童保育应用程序中添加了儿童。我在帖子中添加了编辑,但这是本页面要求的一部分。
public partial class BankListAgentId
{
    public string AgentId { get; set; }
    public int ID { get; set; }
    public string FixedOrVariable { get; set; }
    public string StateCode { get; set; }

    public virtual BankListMaster BankListMaster { get; set; }
}
@for (int i = 0; i < Model.BankListAgentId.Count; i++)
            {                    
                if (!String.IsNullOrWhiteSpace(Model.BankListAgentId[i].AgentId) && Model.BankListAgentId[i].FixedOrVariable.Equals("Fixed"))
                {
                    @Html.EditorFor(model => Model.BankListAgentId[i])
                }
            }