asp.net-mvc – MVC – 一次创建对象和相关对象
我想在同一视图中创建一个带有子/相关对象的父对象.
一个例子是:创建一个父亲(带有一些名字)以及他的所有儿子(带有他们的名字).我创建了一个视图模型: public class FatherViewModel { public Father father {get; set;} // has 1 property Name public List<Son> {get; set;} // has 1 property Name } 我的问题是,如何在发布帖子时从视图中获取Sons列表? 更新: 我尝试了下面描述的Shyju的编辑模板示例,但我的编辑器从未被调用过. public class Person { public int Id { get; set; } public string Name { get; set; } public int? FatherId { get; set; } public virtual ICollection<Person> Children { get; set; } } 我这样做了: >为具有索引,创建,编辑的人员提供完整控制器的脚手架… @model TestEditorTemplate.Models.Person 问题: > @ Html.EditorFor(m => m.Children)如何使用 解决方法
您可以使用EditorTemplates来处理此问题.这是一个工作样本.
所以我有一个viewmodel来表示父子关系 public class PersonVM { public int Id { set; get; } public string Name { set; get; } public int? ParentId { set; get; } public List<PersonVM> Childs { set; get; } } 在我的GET动作方法中,我创建了一个视图模型的对象,并将Father -childs数据加载到它. public ActionResult EditorTmp(int id = 1) { //Hard coded for demo,you may replace with actual DB values var person = new PersonVM {Id = 1,Name = "Mike"}; person.Childs = new List<PersonVM> { new PersonVM {Id = 2,Name = "Scott",ParentId = 11},new PersonVM {Id = 2,Name = "Gavin",ParentId = 12} }; return View(person); } 现在我将创建一个EditorTemplate.为此,请转到Views文件夹,并在与控制器同名的目录下创建名为EditorTemplates的目录,并添加名为PersonVM.cshtml的视图 现在,转到此视图并添加以下代码. @model ReplaceWithYourNameSpaceNameHere.PersonVM <div> <h4>Childs </h4> @Html.TextBoxFor(s => s.Name) @Html.HiddenFor(s => s.Id) </div> 现在让我们回到主视图.我们需要将此视图强类型化为我们原始的PersonVM.我们将在此视图中使用EditorFor html helper方法来调用我们的编辑器模板 @model ReplaceWithYourNameSpaceNameHere.PersonVM @using (Html.BeginForm()) { <div> @Html.TextBoxFor(s => s.Name) @Html.HiddenFor(s => s.Id) </div> @Html.EditorFor(s=>s.Childs) <input type="submit"/> } 现在在控制器中有一个HttpPost方法来处理表单发布 [HttpPost] public ActionResult EditorTmp(PersonVM model) { int fatherId = model.Id; foreach (var person in model.Childs) { var id=person.Id; var name = person.Name; } // to do : Save,then Redirect (PRG pattern) return View(model); } 现在,如果在HttpPost操作方法中放置一个断点,您可以看到子节点的Id被传递给此操作方法. 需要记住的一件重要事情是,您的编辑器模板视图的名称应与您绑定它的类型相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在iframe中提交后刷新iframe父页面?
- asp.net-mvc – 确定哪个控制器和操作在ASP.NET MVC中处理特
- Winforms,ASP.NET,WPF的语法突出显示文本框
- asp.net – 元素’system.webServer’有无效的子元素’重写
- asp.net-mvc – 如果在Web配置中禁用会话状态,则对MVC中的V
- asp.net-mvc – Razor视图引擎:复杂循环和HTML
- asp.net – MVC 3在IEnumerable模型视图中编辑数据
- asp.net-mvc – 无法在实体框架模型中的MVC 4模板中使用Use
- asp.net – 如何处理Null(GridView Container.DataItem)
- Asp.net网站首先启动非常慢
- asp.net-mvc – TryUpdateModel与强类型方法参数
- asp.net-web-api – WebApi:如何将状态从过滤器
- asp.net-mvc – Visual Studio断点未被击中
- asp.net-mvc – 如何动态绑定kendo mvc ui dropd
- 如何在多个ASP.NET请求中更新EF中的实体而不再检
- ASP.NET Core托管和部署Linux实操演练手册
- asp-classic – ASP Classic中的溢出
- asp.net – 对于单个页面,requestFiltering allo
- asp.net – .NET Web API 2 OWIN承载令牌认证
- ASP.NET MVC或ASP.NET MVC2 RC2 – > RTM