2011-05-30 4 views
1

j'ai deux fonctions de contrôleur: l'une pour l'affichage par défaut, et un pour postback. Le premier que j'utilise pour assigner des valeurs par défaut à la liste du modèle. La seconde consiste à ajouter des valeurs supplémentaires à la liste. Après, la page affiche le contenu de la liste. En ce moment, je perds tout dans la liste sauf ce que la dernière fonction du contrôleur a fait.données du modèle dans ASP.NET MVC Persistant

Je voudrais que mes données de modèle à persister, comment cela peut-il être fait?

Répondre

1

Je suppose que vous avez une situation comme celle-ci:

public class Model { 
    public List<..> List { get; set; } 
    ... 
} 

public class MyController 
{ 
    public ActionResult List() { 
    return View(new Model { List = new List<..> { /* some items */ } }); 
    } 

    [HttpPost] 
    public ActionResult AddToList(Model model, string itemText) { 
    model.List.Add(/* another item with specified text*/); 
    return View("List", model); 
    } 
} 

Dans la page de la liste affichée soit vous avez un 1 élément ajouté à l'action AddToList ou la liste complète des éléments initialisés dans l'action de la liste. Ce qui se passe est naturel, car vous ne publiez pas la liste.

Si tel est le cas, alors vous devez republier l'ensemble du modèle, y compris la liste elle-même afin d'ajouter un élément à la liste existante.

C'est vraiment un problème de génération de la vue correcte de la page de la liste. Le formulaire qui déclenche l'action AddToList doit contenir la date de l'ensemble du modèle/de la liste. Le code HTML généré par la vue devrait ressembler à ceci:

... 
<form method="POST" action="/MyController/AddToList"> 
    <input type="hidden" name="model.List[0]" value="value1" /> 
    ... 
    <input type="hidden" name="model.List[N]" value="valueN" /> 
    New item text: <input type="text" name="itemText" /> 
    ... 
</form> 
... 
0

persist vos données dans la base de données (utilisation EF (http://msdn.microsoft.com/en-us/library/bb399572.aspx)).

Questions connexes