使用editorTemplates在视图中填充列表

时间:2012-08-14 10:46:43

标签: asp.net-mvc asp.net-mvc-3 razor

这是我的模特

namespace chPayroll.Models.CustInformations
{
    public class CustContact
    {
        public int cId { get; set; }
        public int cNoType { get; set; }
        public string cNo1 { get; set; }
        public string cNo2 { get; set; }
        public string cNo3 { get; set; }
        public List<CustContact> contact { get; set; }
    }
}

这是我的editorTemplates

@model chPayroll.Models.CustInformations.CustContact         


@Html.TextBoxFor(model => model.cNo1)
@Html.TextBoxFor(model => model.cNo2)
@Html.TextBoxFor(model => model.cNo3)

我需要显示三个文本框用于接收电子邮件,三个文本框用于接听电话号码。在视野中。如何将项目添加到模型中定义的列表联系人中,以便它显示如下

email:--textbox1----textbox2----textbox3--
telephone:--textbox1----textbox2----textbox3--

并将值发送到控制器

实际上我正在尝试将此数据发送到名为contact的列表中,即

中的列表内部
index 0-email1-email2-email3
index 1-tel1-tel2-tel3

2 个答案:

答案 0 :(得分:1)

@Sanjay:你的视图模型中有一个奇怪的构造:

public class CustContact
{
   public List<CustContact> contact;
}

即使它编译并且机器理解它,我也不会按原样使用它 - 你试图通过拉起你的头发将自己抬离地面:)

应该按照这些方式定义一些内容(遵循命名约定和逻辑):

public class CustContact // single
{
    public int cId { get; set; }
    public int cNoType { get; set; }
    public string cNo1 { get; set; } // those are actual phones, emails etc data
    public string cNo2 { get; set; }
    public string cNo3 { get; set; }
}

public class CustContacts // plural
{
   public List<CustContact> Contacts;
}

查看:

@model CustContacts
@EditorFor(m => Model)

编辑模板:

@model CustContact
@Html.EditorFor(m => m.cNo1)
@Html.EditorFor(m => m.cNo2)
@Html.EditorFor(m => m.cNo3)

为简洁起见,我们不在此处理注释,装饰,错误处理等。

希望这有帮助。

答案 1 :(得分:0)

根据对问题的评论,我将构建如下模型

public class CustContact
{
    public int cId { get; set; }
    public int cNoType { get; set; }
    public string cNo1 { get; set; }
    public string cNo2 { get; set; }
    public string cNo3 { get; set; }
}

public class Customer
{
    public CustContact Email {get; set;}
    public CustContact Telephone {get; set;}
}

然后为Customer创建一个编辑器模板,并在该编辑器模板中具有以下逻辑

@Html.EditorFor(model => model.Email)
@Html.EditorFor(model => model.Telephone)

希望这有帮助