Première fois post,Mon code du contrôleur d'action semble amateurisme
J'ai joué avec MVC abit ... J'ai une vue qui a plusieurs champs d'entrée, certains de ces champs peuvent être vides sur le poteau.
La méthode d'action à l'intérieur du contrôleur pour le poste ressemble à quelque chose comme ça
public ActionResult Filter(int? id, string firstName, string lastName, bool? isMember)
Je me sers de l'extension DynamicQuery qui a été kicking autour afin d'effectuer querys Linq dynamiques sur ma base de données et je Ve encapsulé ceci dans un objet de recherche qui est passé à la couche d'accès aux données pour l'exécution.
Cependant, j'ai aussi un objet ViewData personnalisé qui est repassée à la vue pour afficher les valeurs d'entrée et les résultats de la requête.
tout semble un peu méchant dans le code que je vais avoir à régler les deux propriétés de l'objet de recherche et les ViewDatas.
public ActionResult Filter(int? id, string firstName, string lastName, bool? isMember) {
var search = new Search {
Id = id,
FirstName = firstName,
LastName = lastName,
Member = isMember
};
var memberViewData = new MemberViewData {
Id = id,
FirstName = firstName,
LastName = lastName,
Member = isMember
};
memberViewData.Results = _dataRepository.GetMember(search);
return View("Search", memberViewData);
}
Suis-je sur la pensée et ce devrait vraiment juste transmettre les valeurs à la couche d'accès aux données et alimenter le ViewData dans le contrôleur, ou est-il beaucoup plus élégant motif ou pratique, je pourrais utiliser?
Désolé si cela semble décharge, pas attribuer de personnes pour échanger des idées et de temps pour creuser dans le cadre.
intresting, mais si je comprends bien, je ne peux passer des champs d'entrée de la vue à la méthode ActionMethod, où est instancié de recherche? –
juste réussi à trouver un peu de temps à jouer avec cela et je peux voir que Mvc va essayer de lier les champs de formulaire aux propriétés de l'objet par défaut sans codage supplémentaire !! –
Oui, c'est correct. Il utilise un classeur de modèle par défaut que vous pouvez remplacer si vous avez besoin d'un contrôle plus fin sur la liaison des paramètres. –