[英]ASP.NET MVC: Populating Derived Strongly Typed View with Base Strongly Typed View
[英]Dynamic Controls in a Strongly Typed View (ASP.NET MVC)
说我有以下内容:
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 部电话之间的任何位置)。 我如何将该数据传递到我的 controller 中的创建/编辑方法。我尝试了以下方法,但似乎无法获得电话号码。
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(AddEditViewModel data){}
有了这个我可以调用 data.MyPerson.Name 并获取值但是 data.MyPhones == null
我的问题是:如何设置视图和 controller 才能提交单个添加/编辑页面,该页面根据上面的代码创建一个人 object 和多个电话对象?
如果我正确理解您的问题,您是在询问绑定到电话号码列表的问题。 Phil Haack 有一篇关于如何将model 绑定到列表的帖子
希望这可以帮助。
您可以在 MVC 视图中创建动态控件并与您的 model 绑定。例如,您可以在视图中使用列表集合 model class 或 model class 并且可以在视图中创建动态控件,它将自动与您的 8836156895 属性绑定。
如果您知道会有 5 个电话号码,那么您可以尝试这个示例,这将添加 5 个文本框,并且在提交时您将在视图中获得值 model
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="div_@i">
@Html.TextBoxFor(m => Model.Books[i].Title)
</div>
}
<input type="submit" value="Submit" />
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.