MVC 3 post de formulaire et la persistance du modèle de données

Je pense que je suis pas certains principes fondamentaux sur la façon dont MVC formes de travail. J'ai un formulaire de recherche sur ma page d'accueil qui a cinq ou six les différents champs d'un utilisateur peut effectuer une recherche. J'ai donc cette annonce à mes résultats de l'action de l'amende juste. Le Résultat de l'action ressemble à ceci:

[HttpPost]
public ActionResult Results(SearchModel model)
{
    ResultsModel results = new ResultsModel();
    results.ResultList = SearchManager.Search(model).ToList();

    return View("Results", results);
}

J'ai simplifié la méthode ci-dessus pour ce post, mais l'idée est la même. Donc, tout cela fonctionne très bien. Ma page de résultats s'affiche avec la liste de résultats et de mon utilisateur est à l'URL suivante:

http://www.site.com/results

Alors...maintenant je veux faire quelque chose de relativement commun. J'ai deux listes déroulantes sur la page de résultats. "Trier par" et "le nombre de résultats par page". Comment puis-je le faire et envoyer l'ensemble des données du modèle vers le contrôleur afin que je puisse requête avec les nouveaux paramètres? En réalité, la SearchModel classe a environ 60 différents domaines. Potentiellement toutes les données pouvaient être contenues dans le modèle. Comment vous obstinez-vous que pour une page "publier"?

Cette même question m'a un peu perplexe sur la façon de faire de la pagination ainsi. Mes liens de pagination serait aller à l'URL:

http://www.site.com/results/2

Mais qui suppose que nous sommes de répondre à une requête GET (je ne veux pas 60 champs de données dans la chaîne de requête) et que le modèle de données est passé entre les requêtes GET, qui je sais n'est pas le cas.

Comme je l'ai dit, je pense que je suis pas certains principes fondamentaux sur le travail avec MVC 3, les modèles et la forme des messages.

Quelqu'un peut-il aider à me diriger dans la bonne direction ici? Je serai heureux de modifier/mettre à jour ce post au besoin de clarifier les choses.

MODIFIER: je voulais aussi faire remarquer, j'aimerais éviter de stocker le modèle de vue dans une variable de Session. Ce site finira par être d'équilibrage de charge dans une batterie de serveurs web et je suis vraiment essayer d'éviter d'utiliser de la Session, si possible. Cependant, si c'est la seule alternative, je vais configurer un autre fournisseur d'état de session, mais je préfère ne pas le faire.

  • Hm j'aimerais entendre une opinion d'expert à ce sujet que bien, mais tomé-moi, vous avez l'option de emply Session, directement ou indirectement, par TempData. L'autre option est d'avoir des tonnes de champs cachés sur la page de résultat.
  • désolé, la partie cachée des champs est un non-sens. à mon humble avis la façon la plus propre est d'utiliser tempdata.
  • il se sent encore comme 2001 🙁
InformationsquelleAutor Scott | 2011-05-01