Asp.net mvc 5 MVC5 razor-编辑项目列表

Asp.net mvc 5 MVC5 razor-编辑项目列表,asp.net-mvc-5,Asp.net Mvc 5,我有以下型号 public class Person { public string Name { get; set; } public IList<Phone> PhoneNumbers { get; set; } } public class Phone { public string Number { get; set; } } 公共类人物 { 公共字符串名称{get;set;} 公共IList电话号码{get;set;} } 公用电话 { 公共字

我有以下型号

public class Person
{
    public string Name { get; set; }
    public IList<Phone> PhoneNumbers { get; set; }

}

public class Phone
{
    public string Number { get; set; }
}
公共类人物
{
公共字符串名称{get;set;}
公共IList电话号码{get;set;}
}
公用电话
{
公共字符串编号{get;set;}
}
假设我有以下动作:

    public ActionResult Edit()
    {
        Person p = new Person
        {
            Name = "John K.",
            PhoneNumbers = new List<Phone>
            {
                new Phone {Number = "555-555-5555"},
                new Phone {Number = "555-123-4444"}
            }
        };

        return View(p);
    }
public ActionResult Edit()
{
人员p=新人员
{
Name=“John K.”,
电话号码=新列表
{
新电话{Number=“555-555-5555”},
新电话{Number=“555-123-4444”}
}
};
返回视图(p);
}
我希望该视图允许用户添加/删除/修改电话号码


我寻找了很多简单的解决方案。。。我不敢相信经常发生的那种情况是不容易处理的

您可以使用

您可以使用

虽然不特定于ASP.NET MVC,但您的问题可以通过使用knockout.js来解决。如果您以前没有使用过它,那么了解它并不难,基本的功能也可以。 基本上,您要做的是将您的C#模型解析为一个淘汰视图模型,并在其中维护数据。所有操作(如创建、删除或修改)都将对该视图模型进行,并且该模型将发送到控制器中的POST操作


示例:

虽然不是特定于ASP.NET MVC,但您的问题可以通过使用knockout.js解决。如果您以前没有使用过它,那么了解它并不难,基本的功能也可以。 基本上,您要做的是将您的C#模型解析为一个淘汰视图模型,并在其中维护数据。所有操作(如创建、删除或修改)都将对该视图模型进行,并且该模型将发送到控制器中的POST操作


示例:

您有什么具体问题?有什么异常吗?如果是,例外情况是什么?现在,我在你的整个帖子中没有看到一个问号。如果这是一个关于如何允许某人编辑项目集合的教程的请求,StackOverflow就不是这样一个问题的地方。如果
Phone
只包含一个属性,那么您最好将
public IList PhoneNumbers{get;set;}
更改为public IList PhoneNumbers{get;set;}`并删除该类。然后,在视图中,您只需动态添加
,即可正确绑定收藏。如果您确实需要
手机的更多属性,请参考答案以及您遇到的具体问题?有什么异常吗?如果是,例外情况是什么?现在,我在你的整个帖子中没有看到一个问号。如果这是一个关于如何允许某人编辑项目集合的教程的请求,StackOverflow就不是这样一个问题的地方。如果
Phone
只包含一个属性,那么您最好将
public IList PhoneNumbers{get;set;}
更改为public IList PhoneNumbers{get;set;}`并删除该类。然后,在视图中,您只需动态添加
,集合将被正确绑定。如果您确实需要
手机的更多属性,请参考答案,以及脚手架如何帮助在表单中动态添加新集合项!脚手架如何帮助在表单中动态添加新集合项!