Je suis nouveau dans MVC. J'ai une vue qui contient beaucoup de listes déroulantes et viewmodel avec beaucoup de listes. La plupart de ces listes sont statiques, donc je veux mettre en cache les enregistrements récupérés. Je peux le faire avec (personnalisés) classeurs de modèles, mais je ne aime pas que pour utiliser réellement (personnalisé) Modèle Binder Je dois ajouter le paramètre pour chaque objet dans la méthode d'action comme ceci:Puis-je utiliser ModelBinder pour obtenir un objet sans ajouter de paramètre à l'action?
public ViewResult SubmitNewValue(MyViewModel viewMod, IEnumerable<List1> list1, IEnumerable<List2> list2, IEnumerable<List3> list3 ...)
{
viewMod._list1 = list1;
viewmod._list2 = list2;
viewMod._list3 = list3;
...
return View(viewMod);
}
Ce que je pense regarderait mieux vaut quelque chose comme:
public ViewResult SubmitNewValue(MyViewModel viewMod)
{
viewMod._list1 = ModelBinders.GetInstanceFor<List1>();
viewmod._list2 = ModelBinders.GetInstanceFor<List2>();
viewMod._list3 = ModelBinders.GetInstanceFor<List3>();
//I am able to wrap above to separate function like PrepareViewModel(viewMod)
...
return View(viewMod);
}
Y at-il une fonction/façon de faire cela?
Je ne suis pas sûr si j'ai choisi la bonne approche mais mon viewmodel perd des listes pour des listes déroulantes, ainsi je dois les lire en quelque sorte à ViewModel après [HttpPost] par exemple.
Les listes sont-elles nécessaires pour le modèle de vue ou sont-elles simplement utilisées pour remplir des listes déroulantes? – Nkosi
Je ne sais pas si j'ai bien compris votre question. Je pense qu'ils sont nécessaires pour le viewmodel parce que j'ai besoin d'eux pour remplir les listes déroulantes. Je sais que ViewData peut être utilisé à la place, mais ViewModel semble être une meilleure approche. Ces listes sont utilisées uniquement pour les listes déroulantes. – Kostrzak
Si vos propriétés de collection de 'viewMod' ne sont pas liées en utilisant simplement' MyViewModel viewMod', c'est parce que vous voyez que c'est faux. Vous devriez le montrer pour que vos erreurs puissent être corrigées (regardez le html votre génération - vous devriez avoir les attributs 'name' tels que' name = "_ list1 [0] .someProperty" ',' name = "_ list1 [1]. someProperty "' etc) –