2

这是我的模型

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; }
    }
}

这是我的编辑器模板

@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--

并将值发送给控制器

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

index 0-email1-email2-email3
index 1-tel1-tel2-tel3
4

2 回答 2

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)

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

希望这可以帮助。

于 2012-08-14T13:12:22.900 回答
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)

希望这可以帮助

于 2012-08-14T11:01:59.523 回答