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被传递给此操作方法. 需要记住的一件重要事情是,您的编辑器模板视图的名称应与您绑定它的类型相同. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net-4.0 – 从3.5升级到ASP.net 4.0后登录失败
- asp.net – 什么是LiteralControl?为什么使用
- asp.net – jquery getJson没有将任何值传递给控制器
- asp.net-mvc – 追加?param =到mvc路由
- asp.net-mvc-3 – 可以重定向到新页面的Ajax.BeginForm
- asp.net – 如何绑定gridview中数据表的复选框值
- asp.net-mvc-3 – Razor引擎和ember.js可以一起工作吗?
- asp.net – Azure可以运行WPF吗?
- asp.net-mvc-3 – DotNetOpenAuth.Asp在MVC4应用程序单元测
- asp.net – Page.RouteData.Values对于一个页面是空的而不是
- asp.net-core – 如何根据ASP.NET Core中的解决方
- asp.net-mvc-2 – 如何在局部视图中获取与父操作
- global-variables – MVC 3 Razor _ViewStart中的
- msbuild – 如果不指定目标框架,则不支持“发布”
- asp.net-mvc – 在AppHarbor上获取文件内容
- asp.net – executionTimeout和Server.ScriptTim
- asp.net – 如果我没有指定targetFramework =“4
- asp.net核心 – Microsoft Asp.Net 5 RC1
- 免费ASP.Net和/或CSS主题
- asp.net-mvc-4 – 使用活动目录角色提供者MVC4进
