Je suis nouveau dans l'asp. Je dois écrire une application en mvc qui a une base de données où j'ai deux tables. Une table Parent est reliée une à plusieurs fois à la table Children.
Parent
-------------
parent_id
name
Children
-------------
children_id
parent_id (foreign key)
name
Lorsque l'utilisateur veut créer un élément pour la table Parent, l'éditeur doit avoir la possibilité d'ajouter (créer) des enfants.
Lorsque l'utilisateur modifie un parent, il doit avoir la possibilité de supprimer/éditer des enfants.
Il n'est pas possible d'ajouter/modifier/supprimer des enfants dans l'éditeur séparé.
Je pense que je devrais utiliser un javascript pour générer des contrôles supplémentaires pour Child. Je peux le faire mais je ne sais pas comment faire correspondre ces contrôles html au modèle ?
J'ai écrit ce point de vue :
<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>
}
Cela fonctionne bien. Mais je ne sais vraiment pas comment mapper cet élément sur mon modèle parent.
Maintenant, mon modèle pour créer la vue ressemble à ceci :
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; }
}
Comment remplir ces enfants avec les valeurs de la vue ?
Contrôleur :
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();
}
}
Je veux lire un form.CreatedChildren mais il est Null...