C# 强类型视图中的动态控件(ASP.NET MVC)

C# 强类型视图中的动态控件(ASP.NET MVC),c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,假设我有以下几点: public class Person{ public int ID {get; set;} public string Name {get; set;} } public class Phone{ public int ID {get; set;} public string PhoneNumber {get; set;} } public Class AddEditViewModel{ public Person MyPerso

假设我有以下几点:

public class Person{ public int ID {get; set;} public string Name {get; set;} } public class Phone{ public int ID {get; set;} public string PhoneNumber {get; set;} } public Class AddEditViewModel{ public Person MyPerson{get; set;} public List MyPhones{get; set;} } 公共阶层人士{ 公共int ID{get;set;} 公共字符串名称{get;set;} } 公用电话{ 公共int ID{get;set;} 公共字符串PhoneNumber{get;set;} } 公共类AddEditViewModel{ 公共人物MyPerson{get;set;} 公共列表MyPhones{get;set;} } 我想在我的MVC应用程序中创建创建/编辑操作-该页面继承自ViewPage,我想能够动态添加字段,以便最终用户添加“电话”(0-5部电话之间的任意位置)。如何将该数据传递给控制器中的Create/Edit方法。我尝试了以下方法,但似乎没有任何方法获得电话号码

ViewPage<AddEditViewModel> [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(AddEditViewModel data){} [接受动词(HttpVerbs.Post)] 公共操作结果创建(AddEditViewModel数据){} 有了这个,我可以调用data.MyPerson.Name并获得值,但是data.MyPhones==null


我的问题是:根据上述代码,如何设置视图和控制器,使其能够提交一个添加/编辑页面,从而创建一个包含多个电话对象的单人对象?

如果我正确理解您的问题,您是在问绑定到电话号码列表的问题。菲尔·哈克有一篇关于如何做的帖子


希望这能有所帮助。

如果我正确理解您的问题,您是在询问绑定到电话号码列表的问题。菲尔·哈克有一篇关于如何做的帖子


希望这有帮助。

您可以在MVC视图中创建动态控件,并与您的模型绑定。例如,您可以在视图模型类或模型类中使用列表集合,并可以在视图中创建动态控件,它将自动与您的模型属性绑定。

您可以在MVC视图中创建动态控件并与您的模型绑定。例如,您可以在视图模型类或模型类中使用列表集合,并可以在视图中创建动态控件,它将自动与您的模型属性绑定。

如果您知道将有5个电话号码,则可以尝试此示例,这将添加5个文本框,提交后您将在视图模型中获得值

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime DatePublished { get; set; }

}

public class BookViewModel
{
    public List<Book> Books { get; set; }

}
公共课堂教材
{
公共字符串标题{get;set;}
公共字符串作者{get;set;}
public DateTime DatePublished{get;set;}
}
公共类bookview模型
{
公共列表书籍{get;set;}
}
看法

@model MVCLearning.Models.BookViewModel
@{
使用(Html.BeginForm(“提交”、“动态”))
{
如果(Model.Count>0&&Model!=null)
{
对于(int i=0;i<5;i++)
{
@Html.TextBoxFor(m=>Model.Books[i].Title)
}
}
}
} 

如果您知道将有5个电话号码,那么您可以尝试此示例。此示例将添加5个文本框,提交时您将在视图模型中获得值

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime DatePublished { get; set; }

}

public class BookViewModel
{
    public List<Book> Books { get; set; }

}
公共课堂教材
{
公共字符串标题{get;set;}
公共字符串作者{get;set;}
public DateTime DatePublished{get;set;}
}
公共类bookview模型
{
公共列表书籍{get;set;}
}
看法

@model MVCLearning.Models.BookViewModel
@{
使用(Html.BeginForm(“提交”、“动态”))
{
如果(Model.Count>0&&Model!=null)
{
对于(int i=0;i<5;i++)
{
@Html.TextBoxFor(m=>Model.Books[i].Title)
}
}
}
} 

您完全理解我的问题-我现在可以保证,在自定义对象中使用列表也是如此!您完全理解我的问题-我现在可以保证,在自定义对象中使用列表也是如此!