我是新来的asp。 我必须在mvc中编写一个应用程序,其中有一个数据库,我有两个表。 一张桌子父与桌子儿童一对多地实现。ASP MVC如何创建具有子元素的模型的编辑器?
Parent
-------------
parent_id
name
Children
-------------
children_id
parent_id (foreign key)
name
当用户想要为父表创建一个元素时,编辑器必须有机会添加(创建)子元素。
当用户编辑Parent时,他应该有机会删除/编辑子项。
没有可能在separete编辑
添加/编辑/删除儿童,我想我sholuld使用JavaScript来生成儿童进一步控制。我可以做到这一点,但我不知道如何将这个html控件映射到模型?
我已经写了这样的观点:
<script language="javascript" type="text/javascript">
function add_child() {
$('#children').append($('<input name="child[' + ++$('#children>input').get().length + ']" />'));
}
</script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Create Parent</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div>Children:</div>
<div id="children">
@Html.TextBox("child[1]")
</div>
<div>
<input onclick="add_child()" type="button" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
这工作得很好。但我依然不知道如何在我的父模型上映射这个元素。
现在我为创建视图模型看起来是这样的:
public class ParentModel {
public ParentModel() {
Children = //... get all children from database
}
public string Name { get; set; }
// this should be an ids of selected children
public string[] SelectedChildren { get; set; }
// children to display
public ICollection<ChildModel> Children { get; set; }
}
public class ChildModel {
public string Name { get; set; }
}
如何从视图中的值填充这个孩子?
控制器:
public class ParentController : Controller
{
// show form
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index() {
ParentModel model = new ParentModel();
return View(model);
}
// Get Parent and Children
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(ParentModel form) {
// I want to read a form.CreatedChildren
// but it is Null
return View();
}
}
我想读一个form.CreatedChildren但它是空...
非常有趣的帖子。我会检查出来的。谢谢。 – nosbor 2011-03-25 18:51:54