2009-06-17 111 views
1

说我有以下几点:动态控制

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

我想在我的MVC应用程序创建一个创建/编辑行动 - 从网页和

ViewPage<AddEditViewModel>
我继承希望能够为最终用户动态添加字段以添加“电话”(0-5个电话之间的任何地方)。我将如何将这些数据传递给我的控制器中的创建/编辑方法。我试过以下,但似乎没有得到电话号码。

 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(AddEditViewModel data){} 

有了这个,我可以打电话data.MyPerson.Name并获得价值,但data.MyPhones == NULL

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

回答

1

如果我理解你的问题正确你是问有关绑定的电话号码清单。菲尔哈克有怎么办model binding to a list

希望这有助于一个职位。

+0

你明白我的问题很好 - 现在我可以保证这在自定义对象处理列表以及! – Rob 2009-06-17 03:02:34

0

您可以创建MVC视图动态控制和模型绑定。例如,你可以使用清单收集您的视图模型类或模型类,并可以创建视图动态控制,它会自动与您的模型属性绑定。

0

如果你知道将有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; } 

} 

查看

@model MVCLearning.Models.BookViewModel 

@{ 
    using (Html.BeginForm("Submit", "Dynamic")) 
    { 

    if (Model.Count > 0 && Model != null) 
    { 
     for (int i = 0; i < 5; i++) 
     { 
      <div id="[email protected]"> 
       @Html.TextBoxFor(m => Model.Books[i].Title) 
      </div> 
     } 
     <input type="submit" value="Submit" /> 

    } 

} 
} 
你会得到的值